私は以下の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>
正規表現は 2 番目のケースでは正常に機能しますが、最初のケースでは機能しません。最初のケースでは、番号 1 が削除され、アンカー タグの前に来ています。以下のように出力する方法を教えてください。いずれかの条件をチェックして出力を提供するテンプレートが必要です。そして、ここではケース 2 の出力が正しいです。
application filing, <a href="er:#CHK_CH_11/P11-112">11.112</a>
ありがとう