检查项目级别

时间:2013-03-04 08:17:26

标签: xslt

嗨,我有下面的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.请让我知道如何做到这一点。我知道我可以使用条件,但我想知道如果节点包含数字,如何形成该语句。

由于

1 个答案:

答案 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, '&#xA;')" />
  </xsl:template>
</xsl:stylesheet>

运行您的样本输入,这会产生:

1
2
2
1