マッチ関数を使用して正規表現のマッチと置換を行う XSLT 変換を作成しています。
「() に一致」する Visual Studio 2008 は不明な XSLT 関数です。
<xsl:when test="matches(normalize-space(.),'^([(]I[)])(.+)')">
<xsl:analyze-string select="normalize-space(.)" regex="^^([(]I[)])(.+)"
flags="x">
<xsl:matching-substring>
<xsl:variable name="paraNumber">
<xsl:value-of select="regex-group(1)"/>
</xsl:variable>
<xsl:variable name="text">
<xsl:value-of select="regex-group(2)"/>
</xsl:variable>
<span class="upper-I-double-bracket">
<xsl:value-of select="$paraNumber"/>
</span>
<xsl:value-of select="$text"/>
</xsl:matching-substring>
</xsl:analyze-string>
</xsl:when>