我有一个XML文件,如下所示 我想只选择rootelements和没有匹配模板的子元素。 有人可以帮我写一个只从中选择根元素的匹配模板吗? 谢谢你的帮助。
<root>
<child1>
<element1>Valule</element1>
<element2>Value</element2>
</child1>
<child2>
<element1>Value</element1>
<element2>Value</element2>
</child2>
<rootelement1>rootval1</rootelement1>
<rootelement2>rootval2</rootelement2>
</root>
答案 0 :(得分:2)
要仅选择根标签下没有子元素的元素,您可以执行以下操作
<xsl:apply-templates select="/root/*[not(*)]" />
或者,如果您当前位于 root 元素上,则会将其简化为以下内容:
<xsl:apply-templates select="*[not(*)]" />
因此,例如,使用以下XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/root">
<xsl:apply-templates select="*[not(*)]" />
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
当应用于您的示例XML时,将返回以下内容
<rootelement1>rootval1</rootelement1>
<rootelement2>rootval2</rootelement2>