Die Typendeklaration für XML-Dokumente enthält das Syntaxelement 'DocTypeDecl' sowie seine Nachfahren. Gemeinsam bilden sie das DOCTYPE-Konstrukt.
Die Nachfahren, von denen einige Attribute haben, werden unten gemeinsam mit den Korrelationsnamen für die einzelnen XML-Syntaxelemente aufgeführt. Weitere Informationen zu diesen Elementen erhalten Sie unter XML-Dokumenttypdeklaration.
Syntaxelement | Korrelationsname |
---|---|
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) |
Die folgenden ESQL-Abschnitte demonstrieren die Erstellung von DocTypeDecl-Inhalt in einer Ausgabenachricht, die vom Rechenknoten generiert wird. Diese Korrelationsnamen können auch für die Abfrage all dieser Elemente innerhalb einer XML-Eingabenachricht verwendet werden.
-- Erstellen einer DocType-Deklaration namens 'test' SET OutputRoot.XML.(XML.DocTypeDecl)test = ''; -- Festlegen einer öffentlichen ID und einer System-ID für die DocType-Deklaration SET OutputRoot.XML.(XML.DocTypeDecl).(XML.SystemId) = 'test.dtd'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.PublicId) = '//this/is/a/URI/test'; -- Erstellen einer internen Untergruppe für die Aufbewahrung unserer DTD-Definitionen SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset) = ''; -- Erstellen einer Notation-Deklaration namens 'TeX' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.NotationDecl)TeX = ''; -- Die Notation-Deklaration enthält eine System-ID und eine öffentliche ID 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';
Der folgende Abschnitt demonstriert die Einrichtung von Entitäten:
-- Erstellen einer Entity-Deklaration namens 'ent1' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.EntityDecl)ent1 = ''; -- Diese muss einen Entity-Deklarationswert enthalten SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.EntityDecl)ent1.(XML.EntityDeclValue) = 'dies ist eine Entität'; -- Ähnliches gilt für eine Parameter Entity-Deklaration SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ParameterEntityDecl)ent2 = ''; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ParameterEntityDecl)ent2.(XML.EntityDeclValue) ='#PCDATA | subel2'; -- Erstellen beider Typen einer externen Entität, wovon jeder eine -- öffentliche ID und eine System-ID hat 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'; -- Erstellen einer nicht syntaktisch analysierten Entity-Deklaration namens 'unpsd' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.UnparsedEntityDecl)unpsd = ''; -- Verfügt über einen Verweis auf SystemId, PublicId und Notation 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';
Der folgende Abschnitt demonstriert DocTypeWhiteSpace, DocTypeProcessingInstruction und DocTypeComment:
-- Erstellen einiger Leerzeichen in der DocType-Deklaration SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.DocTypeWhiteSpace) = ' '; -- Erstellen einer Verarbeitungsanweisung namens 'test' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.DocTypePI)test = 'Folgende Aktion ausführen'; -- Hinzufügen eines DocType-Kommentars (DocTypeComment) SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.DocTypeComment) = 'Kommentar';
Der folgende Abschnitt demonstriert die Einrichtung von Elementen:
-- Erstellen verschiedener Elemente 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)';
Der folgende Abschnitt demonstriert die Einrichtung von Attributlisten:
-- Erstellen einer Attributliste für das Element 'subel1' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)subel1 = ''; -- Erstellen eines Attributs namens 'size' mit den Aufzählungswerten -- 'big' oder '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)'; -- Setzen des Standardwerts unseres Attributs auf 'big' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)subel1.(XML.AttributeDef)size. (XML.AttributeDefValue) = 'big'; -- Erstellen eines weiteren Attributs - dieses Mal geben wir für -- den Standardtyp (DefaultType) #REQUIRED an 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)'; -- Erstellen einer weiteren Attributliste für das Element 'el5' mit -- einem Attribut, das CDATA enthält, dem #IMPLIED zugeordnet ist 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';
Dadurch wird die folgende DocType-Deklaration generiert (die Umbrüche wurden zur besseren Lesbarkeit eingefügt):
<!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?> <!--Kommentar--> <!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> ]>