2012-04-11 2 views
0

대부분의 경우 지정된 xml 파일이 있습니다. 하나의 요소 만 명세를 가지지 않으며 임의의 xml 요소를 포함 할 수 있습니다.DTD를 사용하여 자유 형식의 요소가있는 XML 파일 지정

<root_element> 
    <specified_element> 
    <empty_child_node/> 
    </specified_element> 
    <element_with_free_form> 
    <what><ever><xml><which><is><valid><xml> 
    </xml></valid></is></which></xml></ever></what> 
    </element_with_free_form> 
</root_element> 
DTD의 나의 이해는이 XMLS의 종류에 대한 올바른 스펙해야한다는 것입니다

: 여기

<?xml version="1.0" encoding="utf-8"?> 
<!ELEMENT root_element (specified_element, element_with_free_form)> 
<!ELEMENT specified_element (empty_child_node)> 
<!ELEMENT empty_child_node EMPTY> 
<!ELEMENT element_with_free_form ANY> 

전체 XML 문서가 여기에

이 XML의 예입니다 DTD 포함 :

<!DOCTYPE root_element [ 
<!ELEMENT root_element (specified_element, element_with_free_form)> 
<!ELEMENT specified_element (empty_child_node)> 
<!ELEMENT empty_child_node EMPTY> 
<!ELEMENT element_with_free_form ANY> 
]> 
<root_element> 
    <specified_element> 
    <empty_child_node/> 
    </specified_element> 
    <element_with_free_form> 
    <what><ever><xml><which><valid><xml> 
    </xml></valid></which></xml></ever></what> 
    </element_with_free_form> 
</root_element> 

무엇이 잘못 되었나요?

답변

0

element_with_free_formANY으로 선언 되었더라도 그 안에있는 요소도 선언해야합니다. 즉, what, ever, xml, whichvalid에 대한 선언이 필요합니다.

+0

element_with_free_form이 다른 명세 언어에서 실제로 자유 형식이 될 수 있습니까? – amirouche

0

DevNull이 이미 말했듯이, ANY 키워드는 선언 된 요소가 #PCDATA과 DTD에 선언 된 요소를 혼합하여 포함 할 수 있음을 의미합니다.

element_with_free_form에 균형 잡힌 XML이 포함될 수 있다고 선언하려는 경우 DTD가 올바른 스키마 언어가 아닙니다. XSD는 이러한 요소를 선언 할 수있을뿐 아니라 "구조가 무엇이든 상관하지 않지만 자식은 모두 선언되어야합니다."(이는 ANY과 동일한 기능 임) 및 "선언이있는 경우 그것을 확인하고, 그것을 선언하고, 선언을하지 않았다면, 타게하십시오. "(HTML의 원리를"이해하지 못하는 것을 무시하십시오 "에 대한 좋은 첫 번째 근사입니다).

관련 문제