XML 메시지에서 DocTypeDecl에 액세스

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 메시지 내에서 이들 모든 요소를 조사하기 위해 동일한 상관 이름을 사용할 수도 있습니다.

첫 번째 예에서는 DocTypeDecl 및 NotationDecl을 보여줍니다.
-- 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>
]>
관련 개념
메시지 플로우 개요
ESQL 개요
메시지 모델링
관련 태스크
메시지 플로우 설계
메시지 플로우 컨텐츠 정의
ESQL 파일 관리
관련 참조
Compute 노드
Database 노드
Filter 노드
ESQL 참조
SET문
주의사항 | 등록상표 | 다운로드 | 라이브러리 | 지원 | 피드백
Copyright IBM Corporation 1999, 2006 마지막 갱신 날짜: 2006/08/21
ac17320_