链接不同大小的内容的方法

时间:2013-09-05 08:39:48

标签: regex xslt-2.0

我有以下xml案例

情况1:

<tertiaryie level="1">application filing, 11.112</tertiaryie>

案例2:

<tertiaryie level="1">application filing, 1.112</tertiaryie>

当我申请下面的Regex时。

    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

  <xsl:template match="text()">
    <xsl:analyze-string select="." regex="(([Cc]hapter)\s(\d+))">
      <xsl:matching-substring>
        <a href="{concat('er:#AHK_CH_',regex-group(3))}">
          <xsl:value-of select="."/>
        </a>
      </xsl:matching-substring>
      <xsl:non-matching-substring>
        <xsl:analyze-string select="." regex="([0-9])\.([0-9]+)">
          <xsl:matching-substring>
            <a
              href="{concat('er:#AHK_CH_',format-number(number(regex-group(1)),'00'),'/P',format-number(number(regex-group(1)),'00'),'-',regex-group(2))}">
              <xsl:value-of select="."/>
            </a>
          </xsl:matching-substring>
          <xsl:non-matching-substring>
            <xsl:value-of select="."/>
          </xsl:non-matching-substring>
        </xsl:analyze-string>
      </xsl:non-matching-substring>
    </xsl:analyze-string>
  </xsl:template>

</xsl:stylesheet>

我得到的输出如下。 情况1:

 application filing, 1<a href="er:#CHK_CH_01/P01-112">1.112</a>

情况2:

application filing, <a href="er:#CHK_CH_01/P01-112">1.112</a>

正则表达式适用于第二种情况,但不是第一种情况。对于第一种情况,数字1正在被修剪掉并且在锚标记之前到来。请让我知道如何输出如下。我需要一个模板来检查其中一个条件并给出输出。在这里,案例2的输出是正确的。

application filing, <a href="er:#CHK_CH_11/P11-112">11.112</a>

由于

1 个答案:

答案 0 :(得分:1)

只需调整你的正则表达式:

<xsl:analyze-string select="." regex="([0-9]+)\.([0-9]+)">