2013-11-20 1 views
2

dtd 스키마가있는 XML 파일이 있습니다. 속성 및 요소에 몇 가지 규칙을 추가하려고합니다. 내가 가지고 가정 : 물론DTD 스키마에서 여러 규칙 선언

<a ...><value>some_value_with_&&&</value></a> 

, 그 값을

<!DOCTYPE root [ 
<!ATTLIST a ..... > 
<!ATTLIST b ..... > 
]> 

는 이제 다음을 수행 할 : 지금까지, 나는 다음과 같은 형식의 다른 요소에 대한 두 ATTLIST을 가지고 관리 둘러싸여 야합니다 <![CDATA[some_value_with_&&&]]>

나는 이미 dtd 스키마가 있기 때문에 처음에는 그대로두고 CDATA를 제거하고 DTD에서 cdata 유형을 선언 할 수 있다고 생각 했습니까? 나는 다음과 같은 추가하려고 : <!ELEMENT value (#CDATA)> 하지만 난이 두 가지 문제가 있습니다 난 단지 a 요소를 제한 할 수 있습니다, 값 요소에

  1. 그 자체 (I 가정) 강제를?

  2. 자바로 작업합니다. 왜이 A '(' character or an element type is required in the declaration of element type "value".

입니다 : 그와 나는 다음과 같은 오류가 발생합니다?

답변

2

#CDATA는 존재하지 않는 키워드입니다. 요소를 #CDATA 유형으로 선언 할 수 없습니다. attribute declarations in DTDs에서

  1. (#없이)

    CDATA 키워드는 두 가지 용도를 가지고있다.

  2. CDATA sections에서 XML 문서 인스턴스에서만 발생합니다 (DTD에서 선언 할 수 없음).

명확해야 : 요소를 "cdata/CDATA/# CDATA"유형으로 선언 할 수 없습니다. CDATA 섹션 (<![CDATA[...]]>)은 XML 작성자에게 편리합니다. 필요한 경우 XML 문서에서 사용됩니다. 그것은 DTD에서 선언 된 것이 아닙니다.

이 답변도 참조하십시오 : https://stackoverflow.com/a/12128273/407651.

+0

잘 모르겠습니다. 요소를 cdata로 선언 할 수 있습니까? 그래서 실제로 '를 쓰지 않고 요소의 내용을 고유 한 문자 (&>!)로 채울 수 있습니까? – buddy123

+0

아니요, 요소를 "cdata"(또는 "CDATA")로 선언 할 수 없습니다. CDATA 섹션은 필요한 경우 XML 문서에서 간단하게 사용됩니다. DTD에서는 선언 할 수 없습니다. – mzjn