私の XSLT 変換には、1 つのノードを処理するために使用する必要がある 2 つの分析文字列があります。それらは 1 つずつ正常に動作しますが、それらを組み合わせる方法がわかりません。
XML ドキュメントは次のようになります。
<article>
<title>Article 1</title>
<text><![CDATA[Lorem ipsum dolor sit amet, s consectetur adipiscing elit. Donec lorem diam, eleifend sed mollis id, condimentum in velit.
Sed sit amet erat ac mauris adipiscing elementum. Pellentesque eget quam augue, id faucibus magna.
Ut malesuada arcu eu elit sodales sodales. Morbi tristique porttitor tristique. Praesent eget vulputate dui. Cras ut tortor massa, at faucibus ligula.]]></text>
</article>
ここに私のXSLTがあります:
<xsl:template match="/">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Page title</title>
</head>
<body>
<xsl:for-each select="article">
<h1><xsl:value-of select="./title"/></h1>
<!-- This adds paragraphs tags instead of empty lines in the text -->
<xsl:analyze-string select="./text" regex="
">
<xsl:non-matching-substring>
<p>
<xsl:value-of select="." disable-output-escaping="yes"/>
</p>
</xsl:non-matching-substring>
</xsl:analyze-string>
<!-- This is Czech language specific. It looks for ' s ' (or other letter) and changes second space for . So after that it is ' s '. -->
<xsl:analyze-string select="./text" regex="(\s[k/K/s/S/v/V/z/Z]\s)">
<xsl:matching-substring>
<xsl:text> </xsl:text>
<xsl:value-of select="replace(., ' ','')" disable-output-escaping="yes"/>
<xsl:text disable-output-escaping="yes"><![CDATA[ ]]></xsl:text>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="." disable-output-escaping="yes"/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:for-each>
</body>
</html>
</xsl:template>
生成されたテキストに両方の分析文字列を適用する必要があるため<p>
、段落のタグがあり
、適切な場所にも追加されます。
私の望ましい出力は次のようになります。
<h1>Article 1</h1>
<p>Lorem ipsum dolor sit amet, s consectetur adipiscing elit. Donec lorem diam, eleifend sed mollis id, condimentum in velit.</p>
<p>Sed sit amet erat ac mauris adipiscing elementum. Pellentesque eget quam augue, id faucibus magna.</p>
<p>Ut malesuada arcu eu elit sodales sodales. Morbi tristique porttitor tristique. Praesent eget vulputate dui. Cras ut tortor massa, at faucibus ligula.</p>
これを行う方法はありますか?時間を割いて私を助けてくれてありがとう。