J'écris ceci parce que j'ai vraiment frappé le mur et je ne peux pas aller de l'avant. Dans ma base de données j'ai échappé au HTML comme ceci: "<p>My name is Freddy and I was"
. Je veux l'afficher en HTML OU supprimer les balises HTML dans mon modèle XSL. Les deux solutions fonctionneront pour moi et je choisirai la solution la plus rapide.Problème d'échappement de caractères XSL
J'ai lu plusieurs articles en ligne mais je ne trouve pas de solution. J'ai aussi essayé disable-output-escape sans succès. Fondamentalement, il semble que le problème est que quelque part dans l'exécution de XSL le moteur change ceci <p>
en ceci: &lt;p&gt;
. Il convertit &
en &
. Si ça aide, voici mon code XSL. J'ai essayé plusieurs combinaisons avec et sans l'étiquette de sortie sur le dessus.
Toute aide sera appréciée. Merci d'avance.
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes"/>
<xsl:template match="DocumentElement">
<div>
<xsl:attribute name="id">mySlides</xsl:attribute>
<xsl:apply-templates>
<xsl:with-param name="templatenumber" select="0"/>
</xsl:apply-templates>
</div>
<div>
<xsl:attribute name="id">myController</xsl:attribute>
<xsl:apply-templates>
<xsl:with-param name="templatenumber" select="1"/>
</xsl:apply-templates>
</div>
</xsl:template>
<xsl:template match="DocumentElement/QueryResults">
<xsl:param name="templatenumber">tobereplace</xsl:param>
<xsl:if test="$templatenumber=0">
<div>
<xsl:attribute name="id">myController</xsl:attribute>
<div>
<xsl:attribute name="class">article</xsl:attribute>
<h2>
<a>
<xsl:attribute name="class">title</xsl:attribute>
<xsl:attribute name="title"><xsl:value-of select="Title"/></xsl:attribute>
<xsl:attribute name="href">/stories/stories-details/articletype/articleview/articleid/<xsl:value-of select="ArticleId"/>/<xsl:value-of select="SEOTitle"/>.aspx</xsl:attribute>
<xsl:value-of select="Title"/>
</a>
</h2>
<div>
<xsl:attribute name="style">text-indent: 25px;</xsl:attribute>
<xsl:attribute name="class">articlesummary</xsl:attribute>
<xsl:call-template name="removeHtmlTags">
<xsl:with-param name="html" select="Summary" />
</xsl:call-template>
</div>
</div>
</div>
</xsl:if>
<xsl:if test="$templatenumber=1">
<div>
<xsl:attribute name="id">myController</xsl:attribute>
<span>
<xsl:attribute name="class">jFlowControl</xsl:attribute>
aa
</span>
</div>
</xsl:if>
</xsl:template>
<xsl:template name="removeHtmlTags">
<xsl:param name="html"/>
<xsl:choose>
<xsl:when test="contains($html, '<')">
<xsl:value-of select="substring-before($html, '<')"/>
<!-- Recurse through HTML -->
<xsl:call-template name="removeHtmlTags">
<xsl:with-param name="html" select="substring-after($html, '>')"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$html"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
@Marcos, j'ai besoin d'aide pour comprendre ce que vous essayez de faire. Votre code XSLT indique qu'il tente de générer du code HTML, mais vous disposez alors d'un modèle indiquant que vous supprimez des balises HTML. Je ne sais pas pourquoi vous essayez de faire cela. S'il vous plaît donner plus d'informations si vous le pouvez. – Nick
Pour être en mesure de dire quelque chose sur le problème, il serait vraiment utile d'avoir un exemple d'entrée XML à exécuter dans la feuille de style et qui présente le problème, et aussi de savoir quel processeur XSLT vous utilisez ... – Laurent