2011-08-17 5 views
3

DTD에서 자체 닫히거나 요소가 포함 된 요소를 어떻게 선언 할 수 있습니까? * - 운영자를 찾았으나 빈 요소의 유효성을 검사 할 수 있는지 확인할 수 없습니다.비어 있거나 비어 있지 않은 dtd 요소를 선언하는 방법

나는이 시도했다, 그러나 그것은 EMPTY 요소가 선언되지 않은 것을 말하는 Visual Studio에서 컴파일 오류가 있습니다 :

<!ELEMENT File (Annotations|EMPTY)> 
<!ELEMENT Annotations (State*)> 
<!ELEMENT State EMPTY> 

아니면 다음을 시도해 볼 수도 있습니다,하지만 그것이 만약 내가 확인할 수 없습니다 확인 :

<!ELEMENT File (Annotations?)> 
... 

답변

1

예, File에 대한 요소 선언은 올바른 :

<!ELEMENT File (Annotations?)> 

당신이 말하는 것은 File은 0 또는 하나의 Annotations 요소를 포함 할 수 있습니다. 대신 ?*을 사용한 것입니다 경우에도

, 당신은 File 0 또는 Annotations 요소를 포함 할 수 없다는했습니다 것입니다.

유효한 예 :

<!DOCTYPE File [ 
<!ELEMENT File (Annotations?)> 
<!ELEMENT Annotations (State*)> 
<!ELEMENT State EMPTY> 
]> 
<File/> 

<!DOCTYPE File [ 
<!ELEMENT File (Annotations?)> 
<!ELEMENT Annotations (State*)> 
<!ELEMENT State EMPTY> 
]> 
<File></File> 

<!DOCTYPE File [ 
<!ELEMENT File (Annotations?)> 
<!ELEMENT Annotations (State*)> 
<!ELEMENT State EMPTY> 
]> 
<File> 
    <Annotations/> 
</File> 
+0

그래서 제로 요소를 포함하는 말과 같은 선언입니다 :이 요소가 같은 줄에 종료 슬래시있을 것이다는? 그건 내 질문에 ... – Marnix

+0

예. 0은 빈 요소 (내용이없는 요소)를 가질 수 있음을 의미합니다. 그것은 같은 줄에있는 엔딩 슬래시와는 아무런 관련이 없습니다. XML 편집기 및/또는 프로세서는 줄 바꿈을 다르게 처리 할 수 ​​있습니다. 몇 가지 예제를 추가했습니다. –

+0

확인해 주셔서 감사합니다. 예제는 내가 찾고있는 것과 정확히 일치합니다. – Marnix

관련 문제