1つの方法として、正規表現,\s+([A-Za-z])
を使用して区切り文字と一致するようにanalyze-substringを使用することができます。ただし、キャプチャされた一致が2回書き込まれた区切り文字を出力します。
同じ正規表現を使用して結果をtokenize
とすると、式を分割して重複した文字を削除して元の状態に戻すことができますが、その周囲にはsub
タグが付いています。
この要素に適用すると、次の
<content>ss 2(2)(b), 3, Sch 2 line 10, 20,30, paras 10 div 10, 2 , 3</content>
...
<xsl:template match="content">
<xsl:variable name="first">
<xsl:analyze-string select="." regex=",\s+([A-Za-z])">
<xsl:matching-substring>
<xsl:value-of select="."/><xsl:value-of select="regex-group(1)" />
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:variable>
<xsl:copy>
<xsl:for-each select="tokenize($first, ',\s+[A-Za-z]')">
<sub><xsl:value-of select="." /></sub>
</xsl:for-each>
</xsl:copy>
</xsl:template>
このテンプレートをお試しくださいは感謝出力
<content><sub>ss 2(2)(b), 3</sub><sub>Sch 2 line 10, 20,30</sub><sub>paras 10 div 10, 2 , 3</sub></content>
です。しかし、文字列は異なる場合があります。いずれかのアルファベットで始まります。 – Reegan
これ以上の時間を費やしたい場合は、より詳細な仕様を作成する必要があります。私が言ったように、私はあなたが望んでいたものを推測していましたが、あなたのコメントはそれをより明確にしません。 –