XMLコードをフラット化しようとしています。したがって、改行文字と特殊要素内の複数の空白ノードを削除します。例えばXSLT:要素内の行送り文字を削除する方法
:
<root>
<elment1>
<element2>some text...
<element3>some text...</element3>
<element3>some text...</element3>
<element3>some text...
<element4>some text...</element4>
</element3>
</element2>
</elment1>
<elment1>
<element2>some text...
<element3>some text...</element3>
<element3>some text...</element3>
<element3>some text...
<element4>some text...</element4>
</element3>
</element2>
</elment1>
</root>
出力:
<root>
<elment1>
<element2>some text... <element3>some text...</element3> <element3>some text...</element3> <element3>some text... <element4>some text...</element4></element3></element2>
</elment1>
<elment1>
<element2>some text... <element3>some text...</element3> <element3>some text...</element3> <element3>some text... <element4>some text...</element4></element3></element2>
</elment1>
</root>
XSLTを使用してこの出力を生成する方法はありますか?
ありがとうございます!
編集:
Iは、例えば次のテンプレートを使用する:
<xsl:template match="element2//text()">
<xsl:analyze-string select="." regex="( | +)">
<xsl:matching-substring></xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="."/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
I、分析文字列を使用する、なぜなら正規化空間()いくつかの必要な空白文字を削除します。私が持っている質問は、どうしてテンプレートがelement2内の "line-feed-nodes"を取得していないのでしょうか?
編集2: 私は<xsl:output encoding="UTF-8" indent="yes" method="xml"></xsl:output>
を使用しました。出力命令がなければ動作します。
なぜこれが必要なのか? –
この場合、InDesignはそれぞれネストされたXMLコード\tを正しく処理することができないためです。だから私は1行にいくつかインデントされたノードが必要です。 – Ferestes