0

XMLノードの名前を文字列に変更することを検索しました。XMLからノードへの文字列の例を見つけましたが、その逆はありません。

次のことは可能ですか?

<par>
<run> Some text <break/> </run>
</par>

<par>
<run> some text with no carraige return</run>
</par>

に:

<par>
<run> Some text &#10; </run>
</par>

返信をお待ちしております。

ドノ

4

1 に答える 1

1

確かにそれは可能です。ID変換を使用して、<break>特別に処理するだけです。を使用してコピーする代わりに、<xsl:copy>必要なテキストを出力します。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="2.0">

  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="break">
    <xsl:value-of select="'&#10;'"/>
  </xsl:template>

</xsl:stylesheet>

私は&#10;あなたが使用できる文字通りの出力が欲しいですdisable-output-escaping、のように

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  version="2.0">

  <xsl:template match="node()|@*">
    <xsl:copy>
      <xsl:apply-templates select="node()|@*"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="break">
    <xsl:value-of select="'&amp;#10;'" disable-output-escaping="yes"/>
  </xsl:template>

</xsl:stylesheet>

ただし、これはオプションの機能であり、XSLTプロセッサでのサポートが保証されているわけではありません。

于 2012-12-14T11:21:22.423 に答える