質問は明らかに何度も尋ねられましたが、何の助けも見つかりませんでした。<br>をXSLT 2.0の<br/ >に置き換えてください。
私は
いくつかのノードで<br />
にすべて
<br>
を交換したいと思います。
XML
<paragraphs>
<paragraph><![CDATA[Lorem ipsum dolor sit amet, consetetur sadipscing elitr.<br>sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat.<br>sed diam voluptua.<br>At vero eos et accusam et justo duo dolores et ea rebum.]]>
</paragraph>
<paragraphs>
XSL
<xsl:template match="paragraph">
<paragraph>
<xsl:attribute name="type">public</xsl:attribute>
<xsl:value-of select="replace(., '\<br\>', '\<br /\>')"/>
</paragraph>
</xsl:template>
は残念ながらサクソンは、私が "\" でエスケープしようとしたが、それにもかかわらず、私はそれが権利を取得can''t
SXXP0003: Error reported by XML parser: The value of attribute "select" associated with an element type "null" must not contain the '<' character. org.xml.sax.SAXParseException: The value of attribute "select" associated with an element type "null" must not contain the '<' character.
で終了します。
アイデア?
を、私はあなたが '
と「XML」の入力として提示したものかと思います'マークアップがありますXSLTは通常、 '
'や'
'や'
'のみを持つことができますが、'
'ではないXML入力で動作することを考えると、 '
'だから、HTMLパーサでHTMLパーサを使用し、その入力をXSLTに供給しない限り、あなたの入力がXSLTでどのように処理されるかわかりません。その場合、変換の問題はありません。ツリー全体をXMLまたはXHTMLとしてシリアライズし、次に「
」を取得する必要があります。 –
'replace()'関数はマークアップではなく文字列に対しても機能することにも注意してください。そして、 '<'文字をエスケープする方法は '\ <'ではなく '<'です。しかし、あなたの段落にエスケープされた改行が含まれていた場合にのみ関連します。 –
あなたは間違いなく正しいです。私は忘れた。 – user1491184