XML 文書タイプ宣言には、DocTypeDecl 構文エレメントおよびその子孫が含まれています。これらが共に、DOCTYPE 構造を構成します。
子孫 (一部には属性がある) を、各 XML 構文エレメントの相関名と共に、以下にリストします。すべてのエレメントに関する詳細は、XML 文書タイプ宣言を参照してください。
構文エレメント | 相関名 |
---|---|
AttributeDef | (XML.AttributeDef) |
AttributeDefDefaultType | (XML.AttributeDefDefaultType) |
AttributeDefType | (XML.AttributeDefType) |
AttributeDefValue | (XML.AttributeDefValue) |
AttributeList | (XML.AttributeList) |
DocTypeComment | (XML.DocTypeComment) |
DocTypeDecl | (XML.DocTypeDecl) |
DocTypePI | (XML.DocTypePI) |
DocTypeWhiteSpace | (XML.DocTypeWhiteSpace) |
ElementDef | (XML.ElementDef) |
EntityDecl | (XML.EntityDecl) |
EntityDeclValue | (XML.EntityDeclValue) |
ExternalEntityDecl | (XML.ExternalEntityDecl) |
ExternalParameterEntityDecl | (XML.ExternalParameterEntityDecl) |
IntSubset | (XML.IntSubset) |
NotationDecl | (XML.NotationDecl) |
NotationReference | (XML.NotationReference) |
ParameterEntityDecl | (XML.ParameterEntityDecl) |
PublicId | (XML.PublicId) |
SystemId | (XML.SystemId) |
UnparsedEntityDecl | (XML.UnparsedEntityDecl) |
次のセクションの ESQL は、 Compute ノードが生成した出力メッセージに DocTypeDecl 内容を作成する方法を示しています。 さらに同じ相関名を使用して、入力 XML メッセージ内のすべてのエレメントに問い合わせることができます。
-- Create a DocType Declaration named 'test' SET OutputRoot.XML.(XML.DocTypeDecl)test = ''; -- Set a public and system ID for the DocType Declaration SET OutputRoot.XML.(XML.DocTypeDecl).(XML.SystemId) = 'test.dtd'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.PublicId) = '//this/is/a/URI/test'; -- Create an internal subset to hold our DTD definitions SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset) = ''; -- Create a Notation Declaration called 'TeX' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.NotationDecl)TeX = ''; -- The Notation Declaration contains a SystemId and a PublicId SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.NotationDecl)TeX.(XML.SystemId) = '//TexID'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.NotationDecl)TeX.(XML.PublicId) = '//this/is/a/URI/TexID';
次のセクションは、エンティティーのセットアップ方法を示しています。
-- Create an Entity Declaration called 'ent1' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.EntityDecl)ent1 = ''; -- This must contain an Entity Declaration Value SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.EntityDecl)ent1.(XML.EntityDeclValue) = 'this is an entity'; -- Similarly for a Parameter Entity Declaration SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ParameterEntityDecl)ent2 = ''; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ParameterEntityDecl)ent2.(XML.EntityDeclValue) ='#PCDATA | subel2'; -- Create both types of External Entity, each with a -- public and system ID SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ExternalParameterEntityDecl)extent1 = ''; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ExternalParameterEntityDecl)extent1.(XML.SystemId) = 'more.txt'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ExternalParameterEntityDecl)extent1.(XML.PublicId) = '//this/is/a/URI/extent1'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ExternalEntityDecl)extent2 = ''; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ExternalEntityDecl)extent2.(XML.SystemId) = 'more.txt'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ExternalEntityDecl)extent2.(XML.PublicId) = '//this/is/a/URI/extent2'; -- Create an Unparsed Entity Declaration called 'unpsd' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.UnparsedEntityDecl)unpsd = ''; -- This has a SystemId, PublicId and Notation Reference SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.UnparsedEntityDecl).(XML.SystemId) = 'me.gif'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.UnparsedEntityDecl).(XML.PublicId) = '//this/is/a/URI/me.gif'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.UnparsedEntityDecl).(XML.NotationReference) = 'TeX';
次のセクションは、DocTypeWhiteSpace、DocTypeProcessingInstruction、および DocTypeComment を示しています。
-- Create some whitespace in the DocType Declaration SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.DocTypeWhiteSpace) = ' '; -- Create a Processing Instruction named 'test' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.DocTypePI)test = 'Do this'; -- Add a DocTypeComment SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.DocTypeComment) = 'this is a comment';
次のセクションは、エレメントのセットアップ方法を示しています。
-- Create a variety of Elements SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ElementDef)subel2 = '(#PCDATA)'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ElementDef)subel1 = '(subel2 | el4)+'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ElementDef)el1 = '(#PCDATA)'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ElementDef)el2 = '(#PCDATA | subel2)*'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ElementDef)el3 = '(#PCDATA | subel2)*'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ElementDef)el4 = '(#PCDATA)'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ElementDef)el5 = '(#PCDATA | subel1)*'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ElementDef)el6 = '(#PCDATA)';
次のセクションは、属性リストのセットアップ方法を示しています。
-- Create an AttributeList for element subel1 SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)subel1 = ''; -- Create an attribute called 'size' with enumerated -- values 'big' or 'small' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)subel1.(XML.AttributeDef)size = ''; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)subel1.(XML.AttributeDef)size. (XML.AttributeDefType) = '(big | small)'; -- Set the default value of our attribute to be 'big' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)subel1.(XML.AttributeDef)size. (XML.AttributeDefValue) = 'big'; -- Create another attribute - this time we specify -- the DefaultType as being #REQUIRED SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)subel1.(XML.AttributeDef)shape = ''; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)subel1.(XML.AttributeDef)shape. (XML.AttributeDefType) = '(round | square)'; -- Create another attribute list for element el5 with -- one attribute, containing CDATA which is #IMPLIED SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)el5 = ''; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)el5.(XML.AttributeDef)el5satt = ''; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)el5.(XML.AttributeDef)el5satt. (XML.AttributeDefType)CDATA = ''; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)el5.(XML.AttributeDef)el5satt. (XML.AttributeDefDefaultType) = 'IMPLIED';
これによって、次の DocType 宣言が生成されます (見やすくするために、復帰文字が追加されています)。
<!DOCTYPE test PUBLIC "//this/is/a/URI/test" "test.dtd" [<!NOTATION TeX PUBLIC "//this/is/a/URI/TexID" "//TexID"> <!ENTITY ent1 "this is an entity"> <!ENTITY % ent2 "#PCDATA | subel2"> <!ENTITY % extent1 PUBLIC "//this/is/a/URI/extent1" "more.txt"> <!ENTITY extent2 PUBLIC "//this/is/a/URI/extent2" "more.txt"> <!ENTITY unpsd PUBLIC "//this/is/a/URI/me.gif" "me.gif" NDATA TeX> <?test Do this?> <!--this is a comment--> <!ELEMENT subel2 (#PCDATA)> <!ELEMENT subel1 (subel2 | el4)+> <!ELEMENT el1 (#PCDATA)> <!ELEMENT el2 (#PCDATA | subel2)*> <!ELEMENT el3 (#PCDATA | subel2)*> <!ELEMENT el4 (#PCDATA)> <!ELEMENT el5 (#PCDATA | subel1)*> <!ELEMENT el6 (#PCDATA)> <!ATTLIST subel1 size (big | small) "big" shape (round | square) #REQUIRED> <!ATTLIST el5 el5satt CDATA #IMPLIED> ]>