假设我有一个类似这样的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
标签中,而这不是我想要的位置
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>
根据Martin的回答,我认为(希望?(这样的东西应该有效:
<xsl:template match="child[GoldenTag and other-tests]">
<xsl:copy-of select="."/>
<SilverTag>
<xsl:value-of select="GoldenTag"/>
</SilverTag>
</xsl:template>