我尝试了不同的方法,但无法弄清楚错误。我必须做2次检查来设置属性的值。下面的例子是它的一个简单版本。
输入XML
`
<Detail Type="3242432" LastDate="2016-04-22T11:02:43+01:00"
NodName="10001"
UpdateValueReason="Apple: 123 56"
Date="2016-04-22T11:02:43+01:00">
<Sub EventID="2">
</Detail>
`
XSL
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/Detail/Sub">
<Status>
<xsl:attribute name="StatusType">
<xsl:choose>
<xsl:when test="../starts-with(@UpdateValueReason, 'Apple') and @EventID='2'">
<xsl:value-of select="'23'" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="'1234'" />
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</Status>
</xsl:template>
</xsl:stylesheet>
这里我正在检查一个属性是否以某些char开头我是否正在标记另一个属性,但是它的抛出错误
在灶具上运行时出错
错误:
错误:说明:此处预计NodeTest。
../--& gt; start-with&lt; - (@ UpdateValueReason,'Apple')和@ EventID ='2'
答案 0 :(得分:2)
您当前的语法适用于XSLT 2.0,但不适用于XSLT 1.0。
尝试使用XSLT 1.0:
<xsl:when test="starts-with(../@UpdateValueReason, 'Apple') and @EventID='2'">