Elemento <xsl:text>

Genera un nodo de texto a partir de una hoja de estilos. Los nodos de sólo espacios en blanco se conservan en el resultado.

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

Atributos

  • disable-output-escaping
    El valor predeterminado es "no". Si el valor es "yes", se obtendrá sin escape un nodo de texto generado mediante la creación de instancias para el elemento <xsl:text>. Por ejemplo, a continuación se muestra cómo se genera el carácter único "<".

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

    Nota

    Como puede utilizarse disable-output-escaping="yes" para generar documentos que no están bien formados, debe emplearse con cuidado. Un resultado que no está bien formado puede generar errores en determinadas circunstancias. Por ejemplo, transformNodeToObject a un documento XML requiere que el resultado tenga el formato correcto y, por tanto, podría no completarse si disable-output-escaping ha afectado al buen formato del documento. Considere disable-output-escaping="yes" como una función avanzada que sólo debe utilizarse cuando se conocen los posible peligros.

Información del elemento

Número de apariciones

Ilimitado

Elementos primarios

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, elementos de salida

Elementos secundarios

(No hay elementos secundarios)

Comentarios

En una hoja de estilos, el texto puede generarse al árbol de resultados literales con o sin <xsl:text>. No obstante, con este elemento se puede ejercer algo de control sobre los espacios en blanco creados por la hoja de estilos. Por ejemplo, para hacer que la hoja de estilos sea más legible, podría escribir un elemento por línea en una plantilla y aplicar sangría a algunos párrafos. Haciendo esto se introducen los espacios en blanco como parte de la regla de plantilla. Este podría ser o no un efecto deseado de la transformación.

A veces se podría querer introducir un carácter de espacio en blanco para separar dos valores de datos. Se puede utilizar un elemento <xsl:text> para lograr esto. El espacio en blanco incluido dentro de <xsl:text> se genera en el árbol de resultados. Por tanto, la siguiente plantilla—

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

—siempre generará un nuevo nodo de texto de línea en el árbol de resultados. Sin embargo, los nodos de texto de sólo espacio en blanco no incluidos por <xsl:text> se eliminarán del árbol de resultados. El ejemplo siguiente muestra cómo utilizar los elementos vacíos <xsl:text/> en éste.

Ejemplo

Archivo XML (text.xml)

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

Archivo XSLT (text.xsl)

La siguiente hoja de estilos emplea elementos <xsl:text/> vacíos para eliminar todos los caracteres de espacio en blanco (espacios, nuevas líneas y tabulaciones) que, de lo contrario, habrían generado las reglas de plantilla. El resultado se muestra a continuación en el resultado con formato.

<?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>

Archivo HTML (text.htm)

El siguiente archivo HTML se puede utilizar para intentar la transformación XSLT y ver el resultado.

<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.5.0");
      var xml = new ActiveXObject("MSXML2.DOMDocument.5.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>

¡Inténtelo!

  1. Copie el código de ejemplo en los archivos adecuados y guarde éstos en la unidad local.

  2. Haga doble clic en el archivo HTML, text.htm.

  3. Haga clic en el botón transform en la página Web que aparece.

Resultados

Cuando la hoja de estilos XSLT anterior se utiliza tal cual, todos los valores de texto se unen por los extremos en una única línea de resultado:

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

Si elimina ambos elementos <xsl:text/> de la plantilla que coincide con los elementos text, obtendrá el siguiente resultado (en 7 líneas):

"First line."

    "Second line."

    ""

Si elimina sólo el primer elemento <xsl:text/> de la plantilla, obtendrá el siguiente resultado (en 4 líneas):

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

Consulte también

Referencia

Elemento <xsl:comment>