嗨,我有下面的xml代码。
<toc-div>
<toc-item num="1.">
<toc-title>Introduction</toc-title>
<toc-pg>2.001</toc-pg>
</toc-item>
<toc-item num="(a)">
<toc-title>Transitional arrangements</toc-title>
<toc-pg>2.003</toc-pg>
</toc-item>
<toc-item num="(b)">
<toc-title>Classifying by numbers</toc-title>
<toc-pg>2.006</toc-pg>
</toc-item>
<toc-item num="2.">
<toc-title>Incorporation</toc-title>
<toc-pg>2.009</toc-pg>
</toc-item>
</toc-div>
这里我想要一个xslt给我输出为1,如果toc项目有一个数字,我希望它是2.请让我知道如何做到这一点。我知道我可以使用条件,但我想知道如果节点包含数字,如何形成该语句。
由于
答案 0 :(得分:0)
这样的东西?
<xsl:template match="toc-item">
<xsl:variable name="num" select="number(translate(@num, '.', ''))" />
<xsl:variable name="chapter" select="1 + ($num != $num)" />
....
</xsl:template>
在此XSLT中使用时:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="toc-item">
<xsl:variable name="num" select="number(translate(@num, '.', ''))" />
<!-- NaN != NaN evaluates to true(). -->
<xsl:variable name="chapter" select="1 + ($num != $num)" />
<xsl:value-of select="concat($chapter, '
')" />
</xsl:template>
</xsl:stylesheet>
运行您的样本输入,这会产生:
1
2
2
1