使用 XSLT 删除 XML 元素中的特定值?
Removing specific values within a XML element using XSLT?
在我的 XSL 转换过程中,我想删除所有 ContextID="de_DE" 的标签。这意味着以下 XML:
<Values>
<Value AttributeID="TEST" ContextID="de_DE" QualifierID="de">1234</Value>
<Value AttributeID="TEST" ContextID="fr_FR" QualifierID="fr">1234</Value>
<Value AttributeID="TEST100" ContextID="de_DE" QualifierID="de">abcd</Value>
<Value AttributeID="TEST100" ContextID="fr_FR" QualifierID="fr">abcd</Value>
</Values>
将成为:
<Values>
<Value AttributeID="TEST" ContextID="fr_FR" QualifierID="fr">1234</Value>
<Value AttributeID="TEST100" ContextID="fr_FR" QualifierID="fr">abcd</Value>
</Values>
如何实现?
提前致谢!
XSLT 没有 'deletion' 的概念。您可以通过匹配节点而不对其进行任何操作来从输入文档中排除节点。 XSLT 处理程序确实具有特定性的概念,因此更特定的模板会覆盖不太特定的模板。
类似于:
<!-- Matches all Value elements and copies them verbatim -->
<xsl:template match="Value">
<xsl:copy/>
</xsl:template>
<!-- Matches all Value elements whose ContextID is 'de_DE' in preference to the less-specific template, and does nothing -->
<xsl:template match="Value[@ContextID='de_DE']"/>
在我的 XSL 转换过程中,我想删除所有 ContextID="de_DE" 的标签。这意味着以下 XML:
<Values>
<Value AttributeID="TEST" ContextID="de_DE" QualifierID="de">1234</Value>
<Value AttributeID="TEST" ContextID="fr_FR" QualifierID="fr">1234</Value>
<Value AttributeID="TEST100" ContextID="de_DE" QualifierID="de">abcd</Value>
<Value AttributeID="TEST100" ContextID="fr_FR" QualifierID="fr">abcd</Value>
</Values>
将成为:
<Values>
<Value AttributeID="TEST" ContextID="fr_FR" QualifierID="fr">1234</Value>
<Value AttributeID="TEST100" ContextID="fr_FR" QualifierID="fr">abcd</Value>
</Values>
如何实现?
提前致谢!
XSLT 没有 'deletion' 的概念。您可以通过匹配节点而不对其进行任何操作来从输入文档中排除节点。 XSLT 处理程序确实具有特定性的概念,因此更特定的模板会覆盖不太特定的模板。
类似于:
<!-- Matches all Value elements and copies them verbatim -->
<xsl:template match="Value">
<xsl:copy/>
</xsl:template>
<!-- Matches all Value elements whose ContextID is 'de_DE' in preference to the less-specific template, and does nothing -->
<xsl:template match="Value[@ContextID='de_DE']"/>