Question

J'essaie de prendre la chaîne " <BR> " dans VB.NET et convertissez-le en HTML via XSLT. Lorsque le code HTML est disponible, il se présente comme suit:

&lt;BR&gt;

Je ne peux que supposer que cela continue et tente de le rendre. Est-il possible de reconvertir ces &lt;/&gt; crochets de manière à obtenir le saut de ligne que j'essaye?

Était-ce utile?

La solution

Vérifiez que le XSLT a:

<xsl:output method="html"/>

modifier: explication à partir de commentaires

Par défaut, XSLT génère XML (1), ce qui signifie qu’il échappera à tous les caractères significatifs. Vous pouvez remplacer cela dans des cas spécifiques avec l'attribut disable-output-escaping="yes" (intro ici ) mais beaucoup plus puissant consiste à changer la sortie en valeur explicite de HTML qui confère globalement le même avantage, comme suit:

  
      
  • Pour les éléments de script et de style, remplacez les caractères d'échappement (tels que   comme & amp; et >) avec leurs valeurs réelles   (& amp; et > ;, respectivement).
  •   
  • Pour les attributs, remplacez les occurrences de > avec >.
  •   
  • Ecrivez des éléments vides tels que <br>, <img> et <input> sans   fermant les balises ou les barres obliques.
  •   
  • Ecrivez des attributs qui véhiculent des informations par leur présence en tant que   opposés à leur valeur, tels que   vérifié et sélectionné, en minimisé   formulaire.
  •   

extrait d'un article couvrant le sujet, une couverture plus récente de stylusstudio ici

Si vous souhaitez obtenir une sortie HTML, vous devez spécifier une sortie HTML.

(1) Il existe en fait un cas où la sortie est définie par défaut en HTML, mais je ne pense pas que ce soit universel et qu'il soit assez obtus de dépendre de celui-ci.

Autres conseils

Essayez de l'envelopper avec <xsl:text disable-output-escaping="yes">&lt;br&gt;</xsl:text>

Je ne connais pas XSLT mais ..

Une solution de contournement consiste à utiliser HttpUtility.HtmlDecode depuis l'espace de noms System.Web.

using System;
using System.Web;

class Program
{
    static void Main()
    {
        Console.WriteLine(HttpUtility.HtmlDecode("&lt;br&gt;"));
        Console.ReadKey();
    }
}

...

Compris! En plus de la réponse sélectionnée, j'ai également fait quelque chose de similaire à cela sur ma chaîne:

htmlString = htmlString.Replace("&lt;","<")
htmlString = htmlString.Replace("&gt;",">")

Je pense cependant que je pourrais finir par utiliser <pre> balises pour tout conserver.

La chaîne " <br> " est déjà HTML afin que vous puissiez simplement Response.Write("<br>").

Mais vous vouliez parler de XSLT, alors j'imagine qu'il y a une transformation en cours. Dans ce cas, la transformation devrait sûrement l'insérer au bon endroit en tant que nœud. Une meilleure question obtiendra probablement une meilleure réponse

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top