Condividi tramite


Elemento <xsl:text>

Genera un nodo di tipo text da un foglio di stile. I nodi con soli spazi vuoti vengono mantenuti nell'output.

<xsl:text
  disable-output-escaping = "yes" | "no">
</xsl:text>

Attributi

  • disable-output-escaping
    Il valore predefinito è "no". Se il valore è "yes", un nodo di tipo text generato dalla creazione di istanze dell'elemento <xsl:text> genererà l'output senza alcun escape. Ad esempio, l'elemento seguente genera il carattere singolo "<".

    <xsl:text disable-output-escaping="yes">&lt;</xsl:text>
    

    Nota

    Poiché disable-output-escaping="yes" può generare documenti in formato non corretto, è necessario utilizzarlo con cautela.L'output in formato non corretto può generare errori in alcune circostanze.Ad esempio, per il metodo transformNodeToObject applicato a un documento XML è necessario che i risultati siano in formato corretto, pertanto il completamento potrebbe interrompersi, se l'attributo disable-output-escaping ha impedito la corretta formattazione del documento.È consigliabile considerare disable-output-escaping="yes" come una funzione avanzata, da utilizzare solo quando i potenziali pericoli sono chiari.

Informazioni sull'elemento

Numero di occorrenze

Illimitato

Elementi padre

xsl:attribute, xsl:comment, xsl:copy, xsl:element, xsl:fallback, xsl:for-each, xsl:if, xsl:otherwise, xsl:message, xsl:param, xsl:processing-instruction, xsl:template, xsl:variable, xsl:when, xsl:with-param, elementi di output

Elementi figlio

(Nessun elemento figlio)

Note

In un foglio di stile è possibile generare del testo nell'albero risultato letterale con o senza <xsl:text>. Tuttavia, con questo elemento è possibile esercitare un certo controllo sugli spazi vuoti creati dal foglio di stile. Ad esempio, per rendere più leggibile il foglio di stile, è possibile scrivere un elemento per riga in un modello, quindi far rientrare alcune righe. In tal modo si introducono spazi vuoti come parte della regola di modello. Questo potrebbe essere un effetto desiderato della trasformazione.

A volte è preferibile introdurre un carattere di spazio vuoto per separare due valori di dati. È possibile utilizzare un elemento <xsl:text> per eseguire l'operazione. Nell'albero risultato viene restituito come output lo spazio vuoto incluso in <xsl:text>. Pertanto, il modello seguente —

<xsl:template match="a-node">
   <xsl:text>
   </xsl:text>
</xsl:template>

— restituirà sempre un nodo di tipo text in una nuova riga come output nell'albero risultato. Tuttavia, i nodi di tipo text con soli spazi vuoti non inclusi da <xsl:text> verranno estratti dall'albero risultato. Nell'esempio seguente viene illustrato come utilizzare elementi <xsl:text/> vuoti a tale scopo.

Esempio

File XML (text.xml)

<?xml version="1.0"?>
<topic>
  <text>First line.</text>
  <text>Second line.</text>
  <text></text>
</topic>

File XSLT (text.xsl)

Nel seguente foglio di stile vengono utilizzati elementi <xsl:text/> vuoti per rimuovere tutti gli spazi vuoti (spazi, caratteri di nuova riga e tabulazioni) che verrebbero altrimenti generati dalle regole di modello. Il risultato viene visualizzato nell'output formattato riportato di seguito.

<?xml version='1.0'?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>

  <xsl:template match="/">
    <xsl:apply-templates/>
  </xsl:template>

  <xsl:template match="text">
    <xsl:text/>"<xsl:value-of select="."/>"<xsl:text/>
  </xsl:template>
</xsl:stylesheet>

File HTML (text.htm)

È possibile utilizzare il seguente file HTML per tentare di eseguire la trasformazione XSLT e visualizzarne i risultati.

<html>
  <head>
    <title></title>
  </head>
  <body onload="init()">
     <div><input type="text" id="xmlName" value="text.xml"></div>
     <div><input type="text" id="xslName" value="text.xsl"></div>
     <div><input type=button value="transform" onclick="trans();"></div>
     <div id="divErr"></div>
     <pre id="preRes" style="background:blue;color:gold"></pre>
  </body>

  <script language="javascript">
    function trans() 
    {
      xmlFile=xmlName.value;
      xslFile=xslName.value;
      if (xmlFile == "" || xslFile == "") 
      {
         divErr.innerHTML = "invalid xml/xsl file names.";
      }

      var xsl = new ActiveXObject("MSXML2.DOMDOCUMENT.6.0");
      var xml = new ActiveXObject("MSXML2.DOMDocument.6.0");
      xml.validateOnParse = false;
      xml.async = false;
      xml.load(xmlFile);
      if (xml.parseError.errorCode != 0)
        divErr.innerHTML = "XML Parse Error : " + xml.parseError.reason;

      xsl.async = false;
      xsl.load(xslFile);
      if (xsl.parseError.errorCode != 0)
        divErr.innerHTML = "XSL Parse Error : " + xsl.parseError.reason;

      try
      {
        res = xml.transformNode(xsl.documentElement);
        preRes.innerText = res;
      }
      catch(err)
      {
        divErr.innerHTML = "Transformation Error:"
               +err.number+"*"+err.description;
      }
    }
  </script>
</html>

Prova

  1. Copiare il codice di esempio nei file appropriati e salvare i file nell'unità locale.

  2. Fare doppio clic sul file HTML, text.htm.

  3. Fare clic sul pulsante transform nella pagina Web visualizzata.

Output

Quando il foglio di stile XSLT viene utilizzato senza apportarvi modifiche, tutti i valori di testo vengono uniti, dall'inizio alla fine, in una singola riga di output:

"First line.""Second line."""

Se si rimuovono entrambi gli elementi <xsl:text/> dal modello corrispondente agli elementi text, verrà restituito il seguente output (in 7 righe):

"First line."

"Second line."

""

Se si rimuove solo il primo elemento <xsl:text/> dal modello, verrà restituito il seguente output (in 4 righe):

"First line."

"Second line."

""

Vedere anche

Riferimenti

Elemento <xsl:comment>