2012-10-01 4 views
0

안녕하세요 저는 xml과 DTD를 처음 사용했습니다 ... 저는 방금 2 시간 전 수업에서 이것을 배웠습니다 ... 나는 DTD로 XML을 만들었습니다. XML 코드가 맞습니까?XML DTD 활동

DTD :

< !DOCTYPE BusinessCard[ 

    <!ELEMENT BusinessCard (Name?,Phone+,Email?)> 
    <!ELEMENT Name (#PCDATA)> 
    <!ELEMENT Phone (#PCDATA)> 
    <!ATTLIST Phone type CDATA "mobile"> 
    <!ATTLIST Phone type CDATA "work"> 
    <!ATTLIST Phone type CDATA "fax"> 
    <!ELEMENT Email (#PCDATA)> 
]> 

XML :

< BusinessCard> 

    <Name >Jose P. Rizal</Name> 

    <Phone type="mobile">(415)555-4567</Phone> 

    <Phone type="work">(800)555-9876</Phone> 

    <Phone type="fax">(515)555-1234</Phone> 

    <Email>[email protected]</Email> 

</BusinessCard> 

답변

3

귀하의 DTD 구문이 법적, 그리고 문서는 DTD에 대한 유효하지만 종류의 트리플 선언 속성에 전화 요소가 없습니다. m 당신이 원하는 것을 말하십시오. 지정된 속성의 첫 번째 선언이 우선합니다, 그래서 당신이해야하는 것은 전화 그렇게 (모든 문자 데이터가 될 수 있습니다 그의 중시하는 유형 속성이 걸릴 수 있음을 의미

<!ATTLIST Phone type CDATA "mobile"> 

에 해당 : 모든 문자열 XML로 표현 가능), 기본값은 "mobile"입니다. 동일한 기본값을 가진 동일한 속성의 다음 두 x 째 다시 선언은 +시됩니다.

<!ATTLIST Phone type (mobile | work | fax) "mobile"> 

: 당신은 속성이 "fax"없이 다른 사람을, "work를"값 "mobile"을 가지고, 또는 수 있다고하고자하는 경우

은, 당신이 사용하고자하는 열거 된 유형입니다 당신이 말하고자하는 것은 속성이 어떤 가치를 가질 수 있지만 "모바일", "작업", "팩스"값은 잘 알려진 값이고 소프트웨어가 그들을 위해 준비되어야한다는 것이고, 그럼 당신은 산문에서 그렇게 말할 필요가 있습니다 ; DTD 표기법으로이를 말할 방법이 없습니다. 당신은 유형이 또한 값 "other을"당신의 운동의 세 가지 값을, 할 수있는 규칙과 전화 두 특성 (유형othertype)를 제공함으로써 오히려 비슷한 무언가를 말할 수 othertype 동안 속성은 임의의 문자열을 값으로 취하며 type="other" 인 경우에만 의미가 있습니다. 따라서 집 전화 번호는 <Phone type="other" othertype="home">...</Phone>으로 태그 될 수 있습니다.

<!ATTLIST Phone type (mobile | work | fax | other) #REQUIRED 
       othertype CDATA #IMPLIED > 
+0

+1 현재 받아 들여지는 것보다 훨씬 좋은 답변입니다. –

+0

당신은 _ 귀하의 DTD가 구문 적으로 합법적이라고 말하지만, 이것을 확인하는 도구 (CLI 또는 웹)가 있습니까? XML이 없으면 DTD 만 구문을 검사합니다. 그것이 잘 형성되면. 나는 찾을 수 없었다. –

+0

모든 유효성 검사를하는 XML 프로세서는 DTD에서 오류를보고하므로 이러한 프로세서는 DTD를 확인하는 도구로 잘 작동해야합니다. 대부분의 경우 XML 문서를 확인하라는 메시지가 기본적으로 가정되므로 DTD를 확인하기 만하면 더미 문서를 제공해야 할 수 있습니다. –