Acceder a DocTypeDecl en un mensaje XML

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.

El primer ejemplo muestra DocTypeDecl y NotationDecl:
-- 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>
]>
Conceptos relacionados
Visión general de flujos de mensajes
Visión general de ESQL
Modelado de mensajes
Tareas relacionadas
Diseñar un flujo de mensajes
Definir el contenido del flujo de mensajes
Gestión de archivos ESQL
Referencia relacionada
Nodo Compute
Nodo Database
Nodo Filter
Referencia de ESQL
Sentencia SET
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2006 Última actualización: 22/08/2006
ac17320_