2016-12-06 10 views
0

xml1 & 2는 DTD에서 어떻게 적합하지 않습니까? 나는 'elm1'과 'eml2'가 각각 한 번 등장 했으므로 요소 (* : 0 이상, + : 적어도 한 번,? : 선택 사항, 최대 한 번)가 여전히 적합하다는 것을 알게되었습니다. DTD를 변경하지 않으면 어떻게해야합니까?XML의 유효한 DTD

<?xml version="1.0"?> 
<!DOCTYPE root[ 
<!ELEMENT root (elm1*,elm2+)> 
<!ELEMENT elm1 (#PCDATA)> 
<!ELEMENT elm2 (#PCDATA)> 
]> 

XML 1

<root> 
<elm1>Blobby</elm1> 
</root> 

XML이

<root> 
<elm2>Blobby</elm2> 
</root> 

답변

2
나는 "XML 1"의 유효성을 검사하지만하지 "XML 2"기대

때문에 루트 요소에 대한 선언

<!ELEMENT root (elm1*,elm2+)> 

은 기본적으로 "루트에 0이있을 수 있습니다. elm1 어린이가 있고 적어도 하나 이상 elm2 어린이가 있어야합니다 ".

아마도 이걸 원하니?

<!ELEMENT root (elm1*,elm2*)> 
+1

_I "XML 1"은 유효하지만 "XML 2"_는 유효하지 않다고 생각합니다. 또한 elm2가 elm1 다음에 와야한다는 것을 명확히하는 데 도움이 될 수 있습니다. 다른 모든 것들이 좋아 보인다. +1 –

+0

나는 그렇게 생각한다. 감사! 그들은 하위 클래스가 없기 때문에 (elm1?, eml2?) 될 수 있습니까? –

+0

@ 대니얼 헤일리 감사합니다! 편집 됨. – RamblinRose