我不能在条件里面使用if。我想检查第二个条件,如果第一个通过,
<cc>
<xsl:variable name="UpperNode" select="(substring-before(//Node1/@SubMan, ' -'))"/>
<xsl:if test="contains($UpperNode,'CUBE')">
<xsl:if test="not(//CubeNode/@att = 'NORMAL')">
<ERROR Significiance="U can't draw it" ErrorCode="Sket" ErrorType="Error" Template="Arts.xsd"/>
<action_on_error>
<msg_box/>
</action_on_error>
</xsl:if>
</xsl:if>
</cc>
即使UpperNode为CUBE且CubeNode / @ att为NORMAL,也不会弹出消息框。如何检查这种情况。
答案 0 :(得分:1)
第二个测试表达式中有一个拼写错误://CubeNode/&att
。请参阅&
?
答案 1 :(得分:0)
这是一个显示您的问题错误的示例。也许你会在这里看到一些解决方案:
输入XML:
<stuff>
<test1>
<Node1 SubMan="CUBE - Stuff"/>
<CubeNode att='NOT NORMAL'/>
</test1>
<test2>
<Node1 SubMan="CUBE - Stuff"/>
<CubeNode att='NORMAL'/>
</test2>
</stuff>
测试XSL:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output indent="yes"/>
<xsl:template match="/">
<results>
<xsl:call-template name="optest">
<xsl:with-param name="test" select="//test1"/>
</xsl:call-template>
<xsl:call-template name="optest">
<xsl:with-param name="test" select="//test2"/>
</xsl:call-template>
</results>
</xsl:template>
<xsl:template name="optest">
<xsl:param name="test"/>
<cc>
<xsl:variable name="UpperNode" select="(substring-before(//Node1/@SubMan, ' -'))"/>
<xsl:if test="contains($UpperNode,'CUBE')">
<xsl:message><xsl:value-of select="$test/CubeNode/@att"/></xsl:message>
<xsl:if test="not($test/CubeNode/@att[. = 'NORMAL'])">
<ERROR Significiance="U can't draw it" ErrorCode="Sket" ErrorType="Error" Template="Arts.xsd"/>
<action_on_error>
<msg_box/>
</action_on_error>
</xsl:if>
</xsl:if>
</cc>
</xsl:template>
</xsl:stylesheet>
输出:
<results>
<cc>
<ERROR Significiance="U can't draw it" ErrorCode="Sket" ErrorType="Error" Template="Arts.xsd"/>
<action_on_error>
<msg_box/>
</action_on_error>
</cc>
<cc/>
</results