考虑到:
<xsl:choose>
<xsl:when test="/XmlOutput/CurrentController/conCategory/aField/contentId!=8
and /XmlOutput/CurrentController/conCategory/aField/contentId!=16
and /XmlOutput/CurrentController/conCategory/aField/contentId!=17
and /XmlOutput/CurrentController/conCategory/aField/contentId!=18
and /XmlOutput/CurrentController/conCategory/aField/contentId!=19
and /XmlOutput/CurrentController/conCategory/aField/contentId!=20
and /XmlOutput/CurrentController/conCategory/aField/contentId!=21">
<xsl:call-template name="foo" />
</when>
</choose>
我如何将这些组合成更简洁的测试?
答案 0 :(得分:4)
如果您使用的是XSLT 2.0,则可以使用序列:
<xsl:choose>
<xsl:when test="/XmlOutput/CurrentController/
conCategory/aField/not(contentId = (8,16 to 21))">
<xsl:call-template name="foo"/>
</xsl:when>
<xsl:otherwise>
<!--tbd-->
</xsl:otherwise>
</xsl:choose>
在此示例中,测试位于contentId
中的所有/XmlOutput/CurrentController/conCategory/aField
元素上。此外,contentId
必须是一个数字。
答案 1 :(得分:1)
以下内容对我来说很有效,可以整理表达方式:
<xsl:variable name="cid" select="/XmlOutput/CurrentController/conCategory/aField/contentId"/>
<xsl:choose>
<xsl:when test="$cid!=8
and $cid!=16
and $cid!=17
and $cid!=18
and $cid!=19
and $cid!=20
and $cid!=21">
<xsl:call-template name="foo" />
</xsl:when>
</xsl:choose>