2013-12-11 1 views
0

저는 XML에 익숙하지 않아서 왜이 경고가 나오는지 이해하지 못합니다. 나는 게임 목록을 나타내는 태그를 정의하고있다. 다음은 내 dtd 파일과 IDE에서 확인한 경고입니다.XML 태그/네임 스페이스 정의? 인식 할 수없는 경고

my dtd file

무엇 이러한 경고는 뜻이며 어떻게 그들을 해결하는 방법은 무엇입니까? 감사!

답변

2

각 오류는 신고되지 않은 요소에 관한 것입니다. 이러한 특정 오류를 해결하려면 DTD에서 참조되는 모든 요소를 ​​선언해야합니다.

는 또한 등, name, developer, engine이 특성 (<!ATTLIST)로 선언 (등, name, developer, engine에 대한 <!ELEMENT 선언을 추가).

오류를 해결하는 대신 요소로 사용하려는 요소와 특성으로 사용하려는 요소를 결정해야합니다.

다음은 몇 가지 예입니다. (DTD를하고 XML은 쉽게 검사 할 수 있도록 함께하는합니다 (DTD 내부 서브 세트 임)의 DTD가 분리 될 수있다...) 속성을 사용하는 요소

<!DOCTYPE gamelist [ 
<!ELEMENT gamelist (game*)> 

<!ELEMENT game (data,metadata)> 
<!ELEMENT data (name,developer,engine?,releasedate?)> 
<!ELEMENT metadata (hoursplayed?,lastplayed?,lastdataupdate)> 

<!ELEMENT name (#PCDATA)> 
<!ELEMENT developer (#PCDATA)> 
<!ELEMENT engine (#PCDATA)> 
<!ELEMENT releasedate (#PCDATA)> 
<!ELEMENT hoursplayed (#PCDATA)> 
<!ELEMENT lastplayed (#PCDATA)> 
<!ELEMENT lastdataupdate (#PCDATA)> 

]> 
<gamelist> 
    <game> 
     <data> 
      <name></name> 
      <developer></developer> 
      <engine></engine> 
      <releasedate></releasedate> 
     </data> 
     <metadata> 
      <hoursplayed></hoursplayed> 
      <lastplayed></lastplayed> 
      <lastdataupdate></lastdataupdate> 
     </metadata> 
    </game> 
</gamelist> 

사용

여기

<!DOCTYPE gamelist [ 
<!ELEMENT gamelist (game*)> 

<!ELEMENT game (data,metadata)> 

<!ELEMENT data EMPTY> 
<!ATTLIST data 
      name  CDATA #REQUIRED 
      developer CDATA #REQUIRED 
      engine  CDATA #IMPLIED 
      releasedate CDATA #IMPLIED > 

<!ELEMENT metadata EMPTY> 
<!ATTLIST metadata 
      hoursplayed CDATA #IMPLIED 
      lastplayed  CDATA #IMPLIED 
      lastdataupdate CDATA #REQUIRED> 
]> 
<gamelist> 
    <game> 
     <data name="" developer="" engine="" releasedate=""/> 
     <metadata hoursplayed="" lastplayed="" lastdataupdate=""/> 
    </game> 
</gamelist> 

은 도움이 될 수 일부 링크입니다 :

XML Essentials (먼저 여기 시작합니다.)

XML 1.0 (특히 "Logical Structures을".) (또한 : XML 1.1는 ("Logical Structures"))

+0

당신은 나에게 간단한 예를 보여 주시겠습니까? 이름을 필수 문자열로 정의하고 싶다고 가정 해 봅시다. 저는 온라인에서 많은 스타일을 찾고 DTD와 XML의 다른 용도를 구분할 수 없습니다. –

+0

@Itsometau - 내 업데이트를 참조하십시오. –