本文說明如何在轉換中禁止輸出逃逸。
原始產品版本: 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 樣式表單
開啟 [記事本] 之類的文字編輯器,然後將下列 XML 貼到檔案中:
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="Transform.xsl"?> <Employee> <Name>Chris</Name> </Employee>
將此檔案儲存為 Source.xml。
在文本編輯器中建立新的檔案,然後在檔案中貼上下列 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('<!DOCTYPE StaffMember [', '<!ELEMENT StaffMember (#PCDATA)>', ']>')" /> <StaffMember> <xsl:value-of select="Name"/> </StaffMember> </xsl:template> </xsl:stylesheet>
將此檔案儲存為 Transform.xsl,並與您建立的 XML 檔放在同一個資料夾中。
使用 Windows 命令稿執行樣式表單
在文本編輯器中建立新檔案,然後在檔案中貼上下列腳本:[明確選項]
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
將此檔案儲存為 Xform.vbs ,與 XML 檔和您所建立的 XSL 樣式表單位於相同的資料夾中。
測試程序
開啟命令提示字元,然後找出包含您三個檔案的資料夾。
在命令提示字元中輸入
cscript xform.vbs
。轉換的輸出會顯示在畫面上,如下所示:
<!DOCTYPE StaffMember [<!ELEMENT StaffMember (#PCDATA)>]> <StaffMember>Chris</StaffMember>
疑難排解
當您使用 disable-output-escaping
屬性時請小心。 如果產生的 < 和 > 字元不相符,則輸出檔格式不正確。 方法 transformNodeToObject 需要結果格式良好,因此如果使用 disable-output-escaping
,可能會導致該方法無法完成。