Rendu des balises HTML depuis un tag CDATA dans XSL
J'ai une balise CDATA dans mon code XML qui contient des liens hypertextes.
<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>
Je suis en train de la transformer en une page HTML comme suit...
<p class="smartText">
<xsl:copy-of select="marketSummaryModuleData/smartText"/>
</p>
Malheureusement, la sortie sur la page s'affiche en texte pur, et non pas au format 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>.
La section CDATA est créé à partir d'un classique de la page ASP, donc la sortie XML ne contient pas la section CDATA. Peut-être une partie du problème? Je n'arrive pas à obtenir les informations de rendre sur la page. J'ai essayé plusieurs solutions proposées par les recherches Google, comme désactiver le-escape-balises xsl:copy-of, xsl:value-of et plus.
Merci
source d'informationauteur Grizzly Peak Software
Vous devez vous connecter pour publier un commentaire.
Vous devez corriger le XML, de sorte que le HTML souhaité (et il doit être bien formé XML) n'est pas contenue dans une section CDATA.
Toute section CDATA est juste une partie d'un texte() nœud et le processeur XSLT traite comme telle.
Mettre balisage dans CDATA est universellement reconnu comme une mauvaise pratique et la question est un résultat typique.
DOE (disable-output-escaping) est une fonction facultative de XSLT et n'est pas garanti d'être mis en œuvre et produire les mêmes résultats attendus sur les différents processeurs XSLT.
Pour citer le W3C XSLT Spec.:
"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.
"
et:
"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."
EDIT: @Randell points dans les commentaires,
disable-output-escaping
n'est pas présent dans tous les processeurs XSLT. Par exemple, celui de Firefox ne prend pas en charge cet attribut. Le ci-dessus ne fonctionne pas pour ces processeurs. Tous les autonome processeurs XSLT je sais soutien, bien que.