Domanda

Sto provando a prendere la stringa " <BR> " in VB.NET e convertilo in HTML tramite XSLT. Quando esce l'HTML, però, appare così:

&lt;BR&gt;

Posso solo supporre che vada avanti e cerchi di renderlo. Esiste un modo per riconvertire quelle &lt;/&gt; tra parentesi in modo da ottenere l'interruzione di linea che sto cercando?

È stato utile?

Soluzione

Verifica che XSLT abbia:

<xsl:output method="html"/>

modifica: spiegazione dai commenti

Per impostazione predefinita, XSLT genera XML (1), il che significa che sfuggirà a qualsiasi carattere significativo. Puoi sovrascriverlo in casi specifici con l'attributo disable-output-escaping="yes" (intro qui ) ma molto più potente è cambiare l'output al valore esplicito di HTML che configura gli stessi vantaggi a livello globale, come il seguente:

  
      
  • Per gli elementi di script e di stile, sostituisci tutti i caratteri di escape (ad esempio   come & amp; e >) con i loro valori effettivi   (& amp; e > ;, rispettivamente).
  •   
  • Per gli attributi, sostituire eventuali occorrenze di > con > ;.
  •   
  • Scrivi elementi vuoti come <br>, <img> e <input> senza   chiusura tag o barre.
  •   
  • Scrivi gli attributi che trasmettono informazioni in base alla loro presenza come   al contrario del loro valore, come ad esempio   controllato e selezionato, in forma minimale   modulo.
  •   

da un solido IBM articolo che copre l'argomento, più recente copertura da stylusstudio qui

Se l'output HTML è ciò che desideri l'output HTML è ciò che dovresti specificare.

(1) In realtà c'è un caso angolare in cui l'output è predefinito in HTML, ma non credo sia universale ed è un po 'ottuso dipendere da esso.

Altri suggerimenti

Prova a avvolgerlo con <xsl:text disable-output-escaping="yes">&lt;br&gt;</xsl:text>

Non so di XSLT ma ..

Una soluzione alternativa potrebbe essere l'utilizzo di HttpUtility.HtmlDecode dallo spazio dei nomi System.Web.

using System;
using System.Web;

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

...

Capito! Oltre alla risposta selezionata, ho anche fatto qualcosa di simile sulla mia stringa:

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

Penso, tuttavia, che alla fine, potrei semplicemente usare i tag <pre> per preservare tutto.

La stringa " <br> " è già HTML, quindi puoi solo Response.Write("<br>").

Ma intendi XSLT, quindi immagino che ci siano delle trasformazioni in corso. In tal caso sicuramente la trasformata dovrebbe inserirla nella posizione corretta come nodo. Una domanda migliore avrà probabilmente una risposta migliore

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top