используйте xslt для создания тега в родительском узле - PullRequest
0 голосов
/ 04 ноября 2019

Предположим, у меня есть XML-документ, похожий на этот (обратите внимание, что для моих целей порядок отображения тегов в конечном документе не имеет значения, в случае, если это имеет значение; мы просто используем XML в качестве причудливого ключа/ пару пар значения)

<MyRoot>
 various tags here I don't care about at the moment
 <child><GoldenTag>1234</GoldenTag></child>
</MyRoot>

Обратите внимание, что значение GoldenTag не всегда 1234;это было только для иллюстрации. Теперь я хочу создать SilverTag, который является (прямым) дочерним элементом MyRoot, значение которого совпадает с GoldenTag, предполагая, что GoldenTag существует и выполняются различные другие условия.

Я не вижу хорошего способа сделатьэто потому, что если я использую template mach='GoldenTag', то содержимое шаблона окажется внутри тега child, что не там, где я хочу.

Ответы [ 2 ]

2 голосов
/ 04 ноября 2019

Любое совпадение на MyRoot, конечно, может также включать условия для других элементов, например,

<xsl:template match="MyRoot[child/GoldenTag and your-other-conditions]">
  <xsl:copy>
      <xsl:apply-templates/>
      <SilverTag><xsl:value-of select="child/GoldenTag"/></SilverTag>
  </xsl:copy>
</xsl:template>
0 голосов
/ 05 ноября 2019

Основываясь на ответе Мартина, я думаю (надеюсь?) Что-то вроде этого должно работать:

<xsl:template match="child[GoldenTag and other-tests]">
    <xsl:copy-of select="."/>
    <SilverTag>
        <xsl:value-of select="GoldenTag"/>
    </SilverTag>
</xsl:template>
...