检查Xsl时,从不工作开始

时间:2016-04-22 12:16:09

标签: xslt xslt-1.0

我尝试了不同的方法,但无法弄清楚错误。我必须做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'

1 个答案:

答案 0 :(得分:2)

您当前的语法适用于XSLT 2.0,但不适用于XSLT 1.0。

尝试使用XSLT 1.0:

 <xsl:when test="starts-with(../@UpdateValueReason, 'Apple') and @EventID='2'">