Élément <xsl:text>

Génère un nœud de texte à partir d'une feuille de style. Les nœuds ne comportant que des espaces blancs sont conservés dans la sortie.

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

Attributs

  • disable-output-escaping
    La valeur par défaut est "no". Si la valeur est "yes", un nœud de texte généré par instanciation de l'élément <xsl:text> sera sorti sans aucun échappement. Par exemple, l'expression suivante génère le caractère unique "<".

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

    Notes

    Puisque disable-output-escaping="yes" peut être utilisé pour générer des documents incorrectement construits, il y a lieu de l'utiliser avec précaution. Une sortie qui n'est pas correctement construite peut générer des erreurs dans certaines circonstances. Par exemple, transformNodeToObject vers un document XML exige que le résultat soit correctement construit et peut donc échouer si disable-output-escaping a affecté la bonne construction du document. Considérez disable-output-escaping="yes" comme une fonction avancée, à n'utiliser que lorsque les dangers potentiels sont maîtrisés.

Informations sur l'élément

Nombre d'occurrences

Illimité

Éléments parents

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, éléments de sortie

Éléments enfants

(Pas d'éléments enfants)

Notes

Dans une feuille de style, le texte peut être généré pour produire l'arborescence résultat littérale avec ou sans <xsl:text>. Cependant, la présence de cet élément permet d'exercer un certain contrôle sur les espaces blancs créés par la feuille de style. Par exemple, pour rendre votre feuille de style plus lisible, vous souhaiterez peut-être écrire un élément par ligne dans un modèle et mettre certaines lignes en retrait. Cela introduit des espaces blancs dans la règle du modèle. Ces espaces peuvent être voulus ou non dans la transformation.

Parfois, vous souhaiterez introduire un espace blanc pour séparer deux données. Vous pouvez utiliser un élément <xsl:text> pour ce faire. Un espace placé dans <xsl:text> est inséré dans l'arborescence résultat. Le modèle

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

produira donc toujours un nœud de texte nouvelle ligne dans l'arborescence résultat. En revanche, les nœuds de texte ne contenant que des espaces blancs non inclus dans <xsl:text> seront éliminés de l'arborescence résultat. L'exemple ci-dessous illustre l'utilisation d'éléments <xsl:text/> vides.

Exemple

Fichier XML (text.xml)

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

Fichier XSLT (text.xsl)

La feuille de style suivante utilise des éléments <xsl:text/> vides pour éliminer tous les caractères d'espace blanc (espaces, nouvelles lignes et tabulations) générés par les règles de modèle. Le résultat est indiqué dans les données en sortie formatées, ci-dessous.

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

Fichier HTML (text.htm)

Le fichier HTML suivant peut permettre de tenter la transformation XSLT et d'afficher les résultats.

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

Essayez !

  1. Copiez l'exemple de code dans les fichiers appropriés et enregistrez les fichiers sur votre disque local.

  2. Double-cliquez sur votre fichier HTML, text.htm.

  3. Cliquez sur le bouton transform dans la page Web qui s'affiche.

Sortie

Si la feuille de style XSLT ci-dessus est utilisée telle quelle, toutes les valeurs texte sont jointes, l'une à la suite de l'autre, dans une seule ligne de sortie :

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

Si vous supprimez les deux éléments <xsl:text/> du modèle correspondant aux éléments text, vous obtenez la sortie suivante (en 7 lignes) :

"First line."

"Second line."

""

Si vous ne supprimez que le premier élément <xsl:text/> du modèle, vous obtenez la sortie suivante (en 4 lignes) :

"First line."

"Second line."

""

Voir aussi

Référence

Élément <xsl:comment>