如何设置“与”条件以从xslt中删除xml元素

时间:2018-08-16 09:11:50

标签: xslt-1.0

我是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”属性!

有人可以帮我吗? 谢谢。

1 个答案:

答案 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">