我是 XSLT 的新手,并且根据 XSLT 中应用的条件获得了从 XML 文件中删除元素的条件。我必须根据同一属性的 2 个条件删除 en 元素。
这是我的虚拟代码:
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="cdm:attributeList/cdm:attribute[cdm:attributeName = 'format'] and cdm:attributeList/cdm:attribute[cdm:attributeValue = 'XYZ']" />
运行XSLT文件时,出现以下错误: 1. 额外的非法代币:"和" 2. "排除结果前缀"属性不允许在 XSL:输出元素上!
有人可以帮我解决这个问题吗? 谢谢。
模板匹配条件不正确,匹配模板时不允许使用and
运算符。您需要修改模板匹配条件,如下所示,该条件对应于所需条件的组合。
<xsl:template match="cdm:attributeList/cdm:attribute[cdm:attributeName = 'format'][cdm:attributeValue = 'XYZ']" />
对于exclude-result-prefixes
的第二期,它是<xsl:stylesheet>
的属性,而不是<xsl:output>
的属性。因此,如果您不希望输出节点具有cdm
前缀,请按如下所示修改<xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:cdm="http://someurl" exclude-result-prefixes="cdm">