【问题标题】:ways to link in content of different sizes链接不同大小内容的方法
【发布时间】:2013-09-05 17:06:27
【问题描述】:

我有以下 xml 案例

案例1:

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

案例 2:

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

当我应用下面的正则表达式时。

    <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 被修剪掉并出现在锚标记之前。请让我知道如何使输出如下。我需要一个模板来检查任一条件并给出输出。而这里的 case 2 输出是正确的。

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

谢谢

【问题讨论】:

  • 我已将您的问题重新标记为 xslt-2.0(而不是 xslt-1.0),因为使用了 xslt 1.0 中不可用的 &lt;xsl:analyze-string&gt; 指令。

标签: regex xslt-2.0


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2021-09-28
    • 2013-10-03
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 2021-05-15
    相关资源
    最近更新 更多