我是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:output元素上不允许使用“ exclude-result-prefixes”属性!
有人可以帮我吗? 谢谢。
答案 0 :(得分:0)
模板匹配条件不正确,匹配模板时不允许使用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">