12

XMLコード内にいくつかのハイパーリンクを含むCDATAタグがあります。

<smartText><![CDATA[
Among individual stocks, the top percentage gainers in the S.&P. 500 are
<a href ='http://investing.domain.com/research/stocks/snapshot
/snapshot.asp?ric=LNC'>Lincoln National Corp</a> and 
<a href ='http://investing.domain.com/research/stocks/snapshot
/snapshot.asp?ric=PLD'>ProLogis</a>.]]>
</smartText>

次のようにHTMLページに変換しようとしています...

<p class="smartText">
    <xsl:copy-of select="marketSummaryModuleData/smartText"/>                                    
</p>    

残念ながら、ページへの出力はhtmlではなく純粋なテキストで表示されます。

Among individual stocks, the top percentage gainers in the S.&P. 500 are <a href ='http://investing.businessweek.com/research/stocks/snapshot/snapshot.asp?ric=PLD'>ProLogis</a> and <a href ='http://investing.businessweek.com/research/stocks/snapshot/snapshot.asp?ric=LNC'>Lincoln National Corp</a>.

CDATAセクションは従来のASPページから作成されているため、実際のXML出力にはCDATAセクションは含まれていません。それは問題の一部でしょうか?ページに表示する情報を取得できないようです。disable-escape-tags、xsl:copy-of、xsl:value-ofなど、Google検索で提供される複数のソリューションを試しました。

ありがとうございました

4

3 に答える 3

11
<p class="smartText">
  <xsl:value-of 
    select="marketSummaryModuleData/smartText" 
    disable-output-escaping="yes"
  />
</p>

編集: @Randell がコメントで指摘しているように、disable-output-escapingすべての XSLT プロセッサに存在するわけではありません。たとえば、Firefox のものはこの属性をサポートしていません。上記はこれらのプロセッサでは機能しません。ただし、私が知っているスタンドアロンのXSLT プロセッサはすべてサポートしています。

于 2009-03-31T16:07:03.807 に答える
6

目的の HTML (整形式の XML である必要があります) が CDATA セクションに含まれないように、XML を修正する必要があります

CDATA セクションは text() ノードの一部にすぎず、XSLT プロセッサはそれをそのように扱います。

CDATA 内にマークアップを配置することは、悪い慣行として広く認識されており、報告された問題は典型的な結果の 1 つです。

DOE (disable-output-escaping) は XSLT のオプション機能であり、異なる XSLT プロセッサで実装され、期待される結果が同じになることは保証されていません。

W3C XSLT 仕様を引用するには:

"An XSLT processor is not required to support disabling output escaping. If an xsl:value-of or xsl:text specifies that output escaping should be disabled and the XSLT processor does not support this, the XSLT processor may signal an error; if it does not signal an error, it must recover by not disabling output escaping. "

と:

"Since disabling output escaping may not work with all XSLT processors and can result in XML that is not well-formed, it should be used only when there is no alternative."

于 2009-03-31T16:09:58.043 に答える