共用方式為


停用轉換中的輸出逸出

本文說明如何在轉換中禁止輸出逃逸。

原始產品版本: Microsoft XML
原始 KB 編號: 315717

摘要

本逐步文章說明如何停用輸出逸出字元,例如 < and > XML 樣式表單轉換中的字元。

為了保證任何 XSL 轉換輸出都是格式正確的文件,角括號字元(< and >)預設會轉換為< and >字元序列。 不過,有時候不需要此行為,例如當您想要在輸出檔中產生檔類型宣告 (DTD) 時:

<!DOCTYPE StaffMember [
 <!ELEMENT StaffMember (#PCDATA)>
]>

需求

下列清單列出所需的建議硬體、軟體、網路基礎結構和服務包:

  • Microsoft XML 3.0 版或更新版本

    本文假設您已熟悉下列主題:

  • XML 和 XSL 的轉換及 MSXML 元件

  • Visual Basic 腳本編輯版 (VBScript)

  • XML 文件物件模型 (DOM)

建立 XML 檔和 XSL 樣式表單

  1. 開啟 [記事本] 之類的文字編輯器,然後將下列 XML 貼到檔案中:

    <?xml version="1.0"?>
    <?xml-stylesheet type="text/xsl" href="Transform.xsl"?>
    <Employee>
        <Name>Chris</Name>
    </Employee>
    
  2. 將此檔案儲存為 Source.xml

  3. 在文本編輯器中建立新的檔案,然後在檔案中貼上下列 XSL 樣式表單。

    注意

    第一個 xsl:value-of 標記中的 disable-output-escaping=“yes” 屬性:

    <?xml version="1.0"?>
    <xsl:stylesheet 
     version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
    <xsl:output method="xml" omit-xml-declaration="yes"/>
        <xsl:template match="Employee">
            <xsl:value-of 
             disable-output-escaping="yes"
             select="concat('&lt;!DOCTYPE StaffMember [',
             '&lt;!ELEMENT StaffMember (#PCDATA)&gt;',
             ']&gt;')" />
            <StaffMember>
                <xsl:value-of select="Name"/>
            </StaffMember>
        </xsl:template>
    </xsl:stylesheet>
    
  4. 將此檔案儲存為 Transform.xsl,並與您建立的 XML 檔放在同一個資料夾中。

使用 Windows 命令稿執行樣式表單

  1. 在文本編輯器中建立新檔案,然後在檔案中貼上下列腳本:[明確選項]

    Dim objSource
    Dim objTransform
    Dim sResult
    
    Set objSource = CreateObject("MSXML2.DOMDocument")
    objSource.async = False
    objSource.load "Source.xml"
    
    Set objTransform = CreateObject("MSXML2.DOMDocument")
    objTransform.async = False
    objTransform.load "Transform.xsl"
    
    sResult = objSource.TransformNode(objTransform.documentElement)
    
    WScript.Echo sResult
    
  2. 將此檔案儲存為 Xform.vbs ,與 XML 檔和您所建立的 XSL 樣式表單位於相同的資料夾中。

測試程序

  1. 開啟命令提示字元,然後找出包含您三個檔案的資料夾。

  2. 在命令提示字元中輸入 cscript xform.vbs

  3. 轉換的輸出會顯示在畫面上,如下所示:

    <!DOCTYPE StaffMember [<!ELEMENT StaffMember (#PCDATA)>]>
    <StaffMember>Chris</StaffMember>
    

疑難排解

當您使用 disable-output-escaping 屬性時請小心。 如果產生的 < 和 > 字元不相符,則輸出檔格式不正確。 方法 transformNodeToObject 需要結果格式良好,因此如果使用 disable-output-escaping,可能會導致該方法無法完成。