以下のような XML があります。
<w:body>
<w:p>
<w:pPr>
<w:pStyle w:val="paragraph"/>
</w:pPr>
<w:r><w:t>1274394 The milk costs , $1.99 [12] test Figure 1</w:t></w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="paragraph"/>
</w:pPr>
<w:r><w:t>sample text Figure 1 and [1]</w:t></w:r>
</w:p>
</w:body>
XSLT を使用して以下のような出力を得たいと考えています。
<w:body>
<w:p>
<w:pPr>
<w:pStyle w:val="paragraph"/>
</w:pPr>
<w:r><w:t>1274394 The milk costs , $1.99 <ref>[12]</ref> test <fig>Figure 1</fig></w:t></w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="paragraph"/>
</w:pPr>
<w:r><w:t>sample text <fig>Figure 1</fig> and <ref>[1]</ref></w:t></w:r>
</w:p>
</w:body>
私のXSLTは次のとおりです。
<xsl:template match="w:p[w:pPr/w:pStyle/@w:val='paragraph']//text()">
<xsl:param name="figregex">
<xsl:text>(Figure)\p{Zs}([0-9]{1,2})</xsl:text>
</xsl:param>
<xsl:param name="matchedRegex">
<xsl:text>(\[)([0-9]{1,2})(\])</xsl:text>
</xsl:param>
<xsl:variable name="fig-first" select=""<fig>""/>
<xsl:variable name="fig-sec" select=""</fig>""/>
<xsl:variable name="r-first" select=""<ref>""/>
<xsl:variable name="r-sec" select=""</ref>""/>
<xsl:analyze-string select="." regex="{$matchedRegex} | {$figregex} ">
<xsl:matching-substring>
<xsl:if test="matches(., $figregex)" >
<xsl:value-of select="$fig-first" disable-output-escaping="yes"/><xsl:value-of select="."/>
<xsl:value-of select="$fig-sec" disable-output-escaping="yes"/>
</xsl:if>
<xsl:if test="matches(., $matchedRegex)" >
<xsl:value-of select="$r-first" disable-output-escaping="yes"/><xsl:value-of select="."/>
<xsl:value-of select="$r-sec" disable-output-escaping="yes"/>
</xsl:if>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
正常に動作しますが、両方が同じ行に存在する場合、前にあるものが最初に変換されます。誰でもこれについて私を助けることができますか? 私が得ている出力は次のとおりです。
<w:body>
<w:p>
<w:pPr>
<w:pStyle w:val="paragraph"/>
</w:pPr>
<w:r><w:t>1274394 The milk costs , $1.99 <ref>[12] </ref>test Figure 1</w:t></w:r>
</w:p>
<w:p>
<w:pPr>
<w:pStyle w:val="paragraph"/>
</w:pPr>
<w:r><w:t>sample text<fig> Figure 1 </fig>and [1]</w:t></w:r>
</w:p>
</w:body>