変換で出力エスケープを無効にする
この記事では、変換で出力エスケープを無効にする方法について説明します。
元の製品バージョン: Microsoft XML
元の KB 番号: 315717
概要
この記事では、XML スタイル シート変換などの < and >
文字の出力エスケープを無効にする方法について説明します。
XSL 変換出力が適切な形式のドキュメントであることを保証するために、山かっこ文字 (< and >
) は既定で文字シーケンスに < and >
変換されます。 ただし、出力ドキュメントでドキュメント型宣言 (DTD) を生成する場合など、この動作が望ましくない場合があります。
<!DOCTYPE StaffMember [
<!ELEMENT StaffMember (#PCDATA)>
]>
要件
次の一覧は、必要な推奨ハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、およびサービス パックの概要を示しています。
Microsoft XML バージョン 3.0 以降
この記事では、次のトピックについて理解していることを前提としています。
XML 変換と XSL 変換と MSXML コンポーネント
Visual Basic Scripting Edition (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 スクリプトを使用してスタイル シートを実行する
テキスト エディターで新しいファイルを作成し、ファイルに次のスクリプトを貼り付けます: Option Explicit
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
このファイル を、作成した XML ドキュメントおよび XSL スタイル シートと同じフォルダーにXform.vbsとして保存します。
プロシージャをテストする
コマンド プロンプトを開き、3 つのファイルを含むフォルダーを見つけます。
コマンド プロンプトで「」と入力
cscript xform.vbs
します。変換からの出力は、画面に次のように表示されます。
<!DOCTYPE StaffMember [<!ELEMENT StaffMember (#PCDATA)>]> <StaffMember>Chris</StaffMember>
トラブルシューティング
属性を使用 disable-output-escaping
する場合は注意してください。 生成された < 文字と > 文字が一致しない場合、出力ドキュメントは適切な形式の XML になりません。 transformNodeToObject メソッドでは結果が適切に形成されている必要があるため、メソッドが使用されている場合はメソッドが完了しない可能性 disable-output-escaping
があります。