2013-04-24 2 views
0

<students>을 루트 요소로 갖고 있으며 0+ <student> 요소를 포함 할 수있는 XML 문서의 DTD를 작성하고 있습니다.DTD 한정자 - 괄호 안이나 바깥에 배치하는 것의 차이

<!ELEMENT students (student)*> 

및 그들은 모두 유효성을 검사

<!ELEMENT students (student+)> 

를 선언 차이점은 무엇이다.

+0

그들은 동일합니다 ... 다른 정의를 게시 하시겠습니까? –

+0

Ooops 내 잘못! Jim에게 감사드립니다. 나는 그것을 업데이트했다 – CodyBugstein

+0

한정자를 괄호 안의 모든 것에 적용하기를 원하지만 단지 한 가지만은 아니지만, 사실 . 누군가가 그것이 유일한 차이점인지 확인할 수 있습니까? – CodyBugstein

답변

2

콘텐츠 모델 (student)*은 0 개 이상의 student 요소를 허용합니다. 콘텐츠 모델 (student+)은 하나 이상의 것을 허용합니다.

OP는 발생 지표가 괄호 내부 또는 외부에 중요한지 여부에 대한 그의 추측 적 의견에서 정확합니다.

이름에 첨부 된 어커런스 표시기 ((student+) 등)는 해당 이름의 요소에 적용됩니다. 괄호로 묶인 그룹에 첨부 된 발생 지표는 그룹 전체에 적용됩니다 ((student)* 등). 괄호로 묶인 그룹에 이러한 토큰 만 포함 된 경우 발생 표시기의 위치는 아무 효과가 없습니다. 그래서 (student+)(student)+은 같은 것을 의미합니다. 플러스가 아닌 별표가있는 해당 쌍과 같습니다. (a+ | b+)a 요소 또는 비 비어 시퀀스 중 하나는 허용하면서 (a | b)+가 혼합 ab 요소 비어 있지 않은 서열을 받아 :

군 여러 토큰 차 만드는가 인디케이터의 위치를 ​​포함

b 요소의 비어 있지 않은 시퀀스. (일부 학습자는이 문제가 있지만 학습 가치가 있습니다.) 마찬가지로 (a, b)+(a+, b+)은 두 가지 다른 언어를 정의합니다.