0

次のスタイルシート:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
    <h1>Music Collection:</h1>
    <table border="1">
      <tr bgcolor="#9acd32">
        <th>Title</th>
        <th>Artist</th>
      </tr>
      <tr>
        <td><xsl:value-of select="catalog/cd/title" disable-output-escaping="yes" /></td>
        <td><xsl:value-of select="catalog/cd/artist" /></td>
      </tr>
    </table> 
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

次のHTMLで使用すると、に変換&lt;されないのはなぜですか?<

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- Edited by XMLSpy® -->
<catalog>
    <cd>
        <title>Empire Burlesque &lt; </title>
        <artist>Bob Dylan</artist>
        <country>USA</country>
        <company>Columbia </company>
        <price>10.90</price>
        <year>1985</year>
    </cd>   
</catalog>

出力はここでテストできます。http://www.w3schools.com/xsl/tryxslt.asp? xmlfile = cdcatalog&xsltfile = tryxsl_value-of

編集

これが機能しない別の例です

<xsl:for-each select="//productType"> 
<xsl:value-of select="." disable-output-escaping="yes" />
            <br></br>
</xsl:for-each> 

DOEを使用すると、<が削除されます。それがないと、<文字が表示されます(XSLT 1.0を使用)

4

3 に答える 3

2

disable-output-encoding は、XSLT 1 のオプション機能 (XSLT 2 では非推奨) だったため、プロセッサはそれを無視できます。特に、XSLT からの出力がメモリ内ツリー (DOM ノードなど) として次のアプリケーションに渡され、その後 XML がシリアライズされる処理パイプラインでは、ほとんどの場合無視されます。doe は本質的に XSLT シリアライゼーション フェーズへのヒントであり、そのような処理パイプラインでは XSLT シリアライゼーションは使用されません。

于 2013-03-06T16:38:21.950 に答える
1

これはプロセッサに関連するものです (私が言うにはバグです) - Visual Studio で .NET XSLT プロセッサを使用すると<、期待どおりに取得され、&lt;削除すると取得されますdisable-output-escaping="yes"

于 2013-03-06T15:38:27.517 に答える
0

disable-output-escaping の効果は、使用しているプロセッサとその使用方法によって異なります。これらの質問に答えるのに十分な情報が提供されていません。

より適切に、なぜそれを使用しているのですか?どのような問題を解決しようとしていますか? 通常、人々が disable-output-escaping を使用するとき、彼らは物事を間違った方法で行っています - より良いアプローチが利用可能です。doe が適切な場合もありますが、それは、スタイルシートの結果ツリーが他のツリーではなくシリアライザーに直接パイプされていることがわかっているパイプラインで、それをサポートするプロセッサでのみスタイルシートを使用できることを意味します-消費プロセス。

于 2013-03-07T10:49:37.370 に答える