我的XML中包含以下案例。
<item num="1.0.1"/>
<item num="1.0.">
我想捕获第一个案例,因为在第二个.
之后有一个数字。
我使用以下语句进行检查,但两种情况都是如此。
<xsl:template name="orderitem" match="item">
<xsl:choose>
<xsl:when test="not(fn:contains(substring-after(substring-after(./@num,'.'),'.'),NaN))">
<xsl:apply-templates/>
</xsl:when>
<xsl:otherwise>
<li class="item">
<xsl:apply-templates/>
</li>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
请让我知道如何区分这两者。
由于
答案 0 :(得分:0)
使用XSLT 2,您可以使用简单的正则表达式
<xsl:when test="matches(@num, "^\d+\.\d+\.\d+$")">
这将匹配由一个点分隔的3组1个或更多数字。