XSLT-多个验证



我不是程序员,需要专业人士的帮助。如果我有多个验证,我想检查,例如,当test=78或81时,我想要这个结果。

我尝试过在没有成功访问的情况下使用

<xsl:variable name = "vatTerm">
<xsl:choose>
<xsl:when test="(DocumentXML/ApplicationObject/Object/CarTypeId!='78') and (CarTypeId!='81')">
<xsl:value-of select="(($netterm+$termfee)*$vatrate )+$eptermfeetotalvat"/> 
</xsl:when>
<xsl:otherwise><xsl:value-of select ="$eptermfeetotalvat"/> 
</xsl:otherwise>
</xsl:choose>
</xsl:variable>

也尝试过;

<xsl:choose>
<xsl:when test="(DocumentXML/ApplicationObject/Object/CarTypeId!=78">
<xsl:value-of select="(($netterm+$termfee)*$vatrate )+$eptermfeetotalvat"/> 
</xsl:when>
<xsl:when test="(DocumentXML/ApplicationObject/Object/CarTypeId!=81">
<xsl:value-of select="(($netterm+$termfee)*$vatrate )+$eptermfeetotalvat"/> 
</xsl:when>
<xsl:otherwise><xsl:value-of select ="$eptermfeetotalvat"/></xsl:otherwise>
</xsl:choose>

你做对了DeMorgan
但是您忘记了路径的基不是重复的。所以,我想,你应该试试

<xsl:when test="DocumentXML/ApplicationObject/Object/CarTypeId!='78' and DocumentXML/ApplicationObject/Object/CarTypeId!='81'">
<xsl:value-of select="(($netterm+$termfee)*$vatrate )+$eptermfeetotalvat"/> 
</xsl:when>

这种方法的限制是,它检查给定路径上的任何CarTypeId是否等于78或81。如果您只有一个CarTypeId,那么这将适用于XPath-1.0。

使用XPath-2.0,您可以简化和精确地执行此任务。

我会使用像这样的一个谓词

<xsl:choose>
<xsl:when test="DocumentXML/ApplicationObject/Object/CarTypeId[.!='78' and .!='81']">
<xsl:value-of select="(($netterm+$termfee)*$vatrate )+$eptermfeetotalvat"/> 
</xsl:when>
<xsl:otherwise><xsl:value-of select ="$eptermfeetotalvat"/> 
</xsl:otherwise>
</xsl:choose>

相关内容

  • 没有找到相关文章

最新更新