Zugriff auf DocTypeDecl in einer XML-Nachricht

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.

Das erste Beispiel demonstriert DocTypeDecl und NotationDecl:
-- 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>
]>
Zugehörige Konzepte
Nachrichtenflüsse - Übersicht
Übersicht zu ESQL
Nachrichten modellieren
Zugehörige Tasks
Einen Nachrichtenfluss entwerfen
Nachrichtenflussinhalte definieren
ESQL-Dateien verwalten
Zugehörige Verweise
Rechenknoten (Compute)
Datenbankknoten (Database)
Filterknoten
ESQL-Referenz
SET-Anweisung
Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
ac17320_