我有这个XML文件,我需要删除属性为languageCode =“FR”的ContentText元素,如果存在属性为languageCode =“EN”的ContentText元素,则保留法文文本。
当前XML:
<MaterialByElementsResponse_sync>
<Material>
<Detail>
<ContentText languageCode="FR">Inscription</ContentText>
<ContentText languageCode="EN">Subscription</ContentText>
</Detail>
</Material>
</MaterialByElementsResponse_sync>
期望的输出:
<MaterialByElementsResponse_sync>
<Material>
<Detail>
<ContentText languageCode="EN">Subscription</ContentText>
</Detail>
</Material>
</MaterialByElementsResponse_sync>
我试过这个XSLT但是它总是删除FR文本,即使EN文本不存在:
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="ContentText[@languageCode='FR']"/>
</xsl:stylesheet>
请记住,如果没有英文文本,则不应删除法文文本。
非常感谢。
答案 0 :(得分:1)
变化:
<xsl:template match="ContentText[@languageCode='FR']"/>
为:
<xsl:template match="ContentText[@languageCode='FR'][../ContentText[@languageCode='EN']]"/>