共用方式為


<xsl:text> 元素

從樣式表產生文字節點。 在輸出中保留僅泛空白字元節點。

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

屬性

  • disable-output-escaping
    預設值為 "no"。 如果值為 "yes",則會輸出藉由具現化 <xsl:text> 項目所產生的文字節點,而不會包含任何逸出。 例如,下列程式碼將會產生單一字元 "<"。

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

    因為 disable-output-escaping="yes" 會產生格式不正確的文件,必須小心使用。格式不正確的輸出可能會在特定情況下產生錯誤。例如,對 XML 文件執行 transformNodeToObject 時,需要格式正確的結果,所以當 disable-output-escaping 已影響到文件的格式正確性時,就可能無法完成這個動作。請將 disable-output-escaping="yes" 視為進階功能,只有在充分瞭解可能的風險時,才能加以使用。

項目資訊

發生次數

無限制

父項目

xsl:attributexsl:commentxsl:copyxsl:elementxsl:fallbackxsl:for-eachxsl:ifxsl:otherwisexsl:messagexsl:paramxsl:processing-instructionxsl:templatexsl:variablexsl:whenxsl:with-param、輸出項目

項目子系

(沒有項目子系)

備註

在樣式表中,可以使用或不使用 <xsl:text> 來產生常值結果樹狀目錄的文字。 然而,您可以使用這個項目,對樣式表所建立的泛空白字元做一些控制。 例如,為了讓樣式表更有可讀性,您可能想在一個範本的每行撰寫一個項目,並縮排某些行。 這麼做會使得範本規則內含泛空白字元。 這可能是、也可能不是您所要的轉換效果。

您有時可能想要加入一個泛空白字元來隔開兩個資料值。 若是如此,則可以使用 <xsl:text> 項目來完成這個動作。 <xsl:text> 所內含的泛空白字元會輸出到結果樹狀目錄中。 因此,下列範本 -

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

- 必定會在結果樹狀目錄中輸出新的文字節點行。 不過,結果樹狀目錄會刪除 <xsl:text> 未含括的僅泛空白字元節點。 下列範例說明如何使用空 <xsl:text/> 項目來執行這個動作。

範例

XML 檔 (text.xml)

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

XSLT 檔 (text.xsl)

下列樣式表會利用空 <xsl:text/> 項目,刪除所有可能會由範本規則產生的泛空白字元 (空格、新行和索引標籤)。 底下顯示了格式化輸出結果。

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

HTML 檔 (text.htm)

下列 HTML 檔可用來嘗試 XSLT 轉換及查看結果。

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

請嘗試

  1. 將程式碼範例複製到適當的檔案,再將檔案儲存到本機磁碟機。

  2. 按兩下 HTML 檔 text.htm

  3. 在出現的網頁上按一下 [轉換] 按鈕。

輸出

完全按照以上的格式使用 XSLT 樣式表時,就會從頭到尾將所有文字值結合成單一輸出行:

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

如果從符合 text 項目的範本中,移除這兩個 <xsl:text/> 項目,則會看到下列輸出 (7 行):

"First line."

"Second line."

""

如果只從範本移除第一個 <xsl:text/> 項目,則會看到下列輸出 (4 行):

"First line."

"Second line."

""

請參閱

參考

<xsl:comment> 元素