La Declaración de tipo de documento XML incluye el elemento de sintaxis DocTypeDecl y sus descendientes. Juntos forman la construcción DOCTYPE.
Los descendientes, algunos de los cuales tienen atributos, se listan más abajo junto con los nombres de correlación para cada elemento de sintaxis XML. Si desea ver más información sobre todos estos elementos, consulte Declaración de tipo de documento XML.
Elemento de sintaxis | Nombre de correlación |
---|---|
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) |
Las siguientes secciones de ESQL le muestran cómo crear contenido de DocTypeDecl en un mensaje de salida generado por el nodo Compute. También puede utilizar los mismos nombres de correlación para interrogar todos estos elementos en un mensaje XML de entrada.
-- Crear una declaración de tipo de documento denominada 'test' SET OutputRoot.XML.(XML.DocTypeDecl)test = ''; -- Establecer un ID público y de sistema para la declaración de tipo de documento SET OutputRoot.XML.(XML.DocTypeDecl).(XML.SystemId) = 'test.dtd'; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.PublicId) = '//this/is/a/URI/test'; -- Crear un subconjunto interno para que contenga nuestras definiciones DTD SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset) = ''; -- Crear una declaración de notación denominada 'TeX' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.NotationDecl)TeX = ''; -- La declaración de notación contiene un SystemId y un 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';
La sección siguiente muestra cómo configurar entidades:
-- Crear una declaración de entidad denominada 'ent1' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.EntityDecl)ent1 = ''; -- Esto debe contener un valor de declaración de entidad SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.EntityDecl)ent1.(XML.EntityDeclValue) = 'esto es una entidad'; -- De forma similar para una declaración de entidad de parámetro SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ParameterEntityDecl)ent2 = ''; SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.ParameterEntityDecl)ent2.(XML.EntityDeclValue) ='#PCDATA | subel2'; -- Crear ambos tipos de entidad externa, cada uno con un -- ID público y de sistema 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'; -- Crear una declaración de entidad no analizada denominada 'unpsd' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.UnparsedEntityDecl)unpsd = ''; -- Esto tiene una referencia SystemId, PublicId y 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';
La sección siguiente muestra DocTypeWhiteSpace, DocTypeProcessingInstruction y DocTypeComment:
-- Crear espacio en blanco en la declaración de tipo de documento SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.DocTypeWhiteSpace) = ' '; -- Crear una instrucción de proceso denominada 'test' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.DocTypePI)test = 'Do this'; -- Añadir un DocTypeComment SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.DocTypeComment) = 'esto es un comentario';
La sección siguiente muestra cómo configurar elementos:
-- Crear una variedad de elementos 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)';
La sección siguiente muestra cómo configurar listas de atributos:
-- Crear una lista de atributos para el elemento subel1 SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)subel1 = ''; -- Crear un atributo denominado 'size' con los -- valores enumerados 'big' o '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)'; -- Establecer el valor por omisión de nuestro atributo para que sea 'big' SET OutputRoot.XML.(XML.DocTypeDecl).(XML.IntSubset). (XML.AttributeList)subel1.(XML.AttributeDef)size. (XML.AttributeDefValue) = 'big'; -- Crear otro atributo - esta vez especificamos -- DefaultType como #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)'; -- Crear otra lista de atributos para el elemento el5 con -- un atributo, que contiene CDATA que es #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';
Esto genera la siguiente declaración de tipo de documento (tenga en cuenta que se han añadido retornos de carro para facilitar la visualización):
<!DOCTYPE test PUBLIC "//this/is/a/URI/test" "test.dtd" [<!NOTATION TeX PUBLIC "//this/is/a/URI/TexID" "//TexID"> <!ENTITY ent1 "esto es una entidad"> <!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?> <!--esto es un comentario--> <!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> ]>