我想用<indicator itype="ST" ind="U"/>
替换看起来像这样的xml标记:<indicator itype="ST" ind="HELLO"/>
。我正在使用的xslt样式表如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match = "@*|node()">
<xsl:copy>
<xsl:apply-templates select = "@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match = "indicator[@itype='ST' and @ind='U']">
<xsl:attribute name = "ind">
<xsl:text>HELLO</xsl:text>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
样式表不起作用,处理器抛出异常。我该如何纠正?
答案 0 :(得分:1)
如果要替换属性值,则需要匹配属性节点。这个样式表:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="indicator[@itype='ST']/@ind[.='U']">
<xsl:attribute name="ind">
<xsl:text>HELLO</xsl:text>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
输出:
<indicator itype="ST" ind="HELLO"></indicator>