2012-11-14 4 views
0

XSD 형식에 대한 질문이 있습니다. 예를 들어
, 나는 XML 문서를XSD 요소 정보 (XML 스키마)가 잘못되었습니다.

<?xml version="1.0" encoding="utf-8"?> 
<feed xmlns:media="http://search.yahoo.com/mrss/"> 
    <entry> 
    <title>Examples</title> 
    <id>1</id> 
    <media:group> 
     <media:thumbnail url="http://www.abc.com/image.jpg" /> 
     <trailer url="http://www.abc.com" /> 
     <info url="http://www.abc.com/xsd/info.jpg" /> 
     <media:description>1</media:description> 
     <media:content name="video.mp4" type="video" duration="400" repeat="true"/> 
    </media:group> 
    <menu> 
     <item uri="localhost:8080/xyzt" /> 
    </menu> 
    </entry> 
</feed> 

을 그리고, 나는 (당신이 그것을 시도 할 수 있습니다) XSD 파일로 변환 자동의 웹 사이트 http://www.xmlforasp.net/codebank/system_xml_schema/buildschema/buildxmlschema.aspx를 사용합니다. 내가 체크 XSD 유효성 검사기의 웹 사이트 http://www.xmlforasp.net/schemavalidator.aspx를 사용할 때, 그 시간에 XSD 형식에 대한 문제가
문제 :

잘못된 '이름'속성 값을 '미디어 : 그룹': '을': '문자 , 이름의 위치 5에있는 16 진수 값 0x3A는 이름에 포함될 수 없습니다. '

<xsd:element name="entry"> 
     <xsd:complexType> 
     <xsd:sequence> 
      <xsd:element name="title" type="xsd:string" /> 
      <xsd:element name="id" type="xsd:int" /> 
      <xsd:element name="media:group">    <!-- here --> 
      <xsd:complexType> 
       <xsd:sequence> 

나는 ... 이해하지 못하는 이유는 XSD의 이름 : 요소가 포함 할 수 없습니다 ":"문자 ??? 위의 문제가 맞으면 어떻게 해결할 수 있습니까?

알고 계시다면 도와주십시오.
대단히 감사합니다!

+0

오류가있는 스키마를 포함하면 유용합니다. 잠깐만, 내가 고칠거야 .. 끝났어. – 13ren

답변

1

다른 유효성 검사기를 사용해보십시오. 나는이 사이트에 대해 아무 것도 모른다. 그러나 당신의 증거로부터 그들은 네임 스페이스가 아닌 XML 파서를 사용하여 XML을 파싱하고있다. 그 일은 꽤 기괴한 일입니다.

1

":"앞에 나오는 텍스트는 namespace이라고합니다. 예 : "media : group"에서 네임 스페이스는 "media"입니다.

네임 스페이스에서 요소를 정의하려면 예상대로 <xsd:element name="media:group">과 같이 말할 수 없습니다.

대신 전체 스키마에 대해 targetNamespace으로 지정해야하며 모두 요소가 해당 스키마에 정의되어 있어야합니다. omittingtargetNamespace에 의해 또한 요소 네임 스페이스가없는 스키마를 가질 수

<xsd:schema targetNamespace="http://search.yahoo.com/mrss/" 
      elementFormDefault="qualified" ...> 
    ... 
    <xsd:element name="group"> 

:이 같이합니다 (qualified 부분은 XML은 "미디어"와 마찬가지로 당신의 XML은 네임 스페이스를 사용할 필요가 있다는 것을 의미)

<xsd:schema ...> 
    ... 
    <xsd:element name="entry"> 

참고 : 두 개의 네임 스페이스에 요소를 정의하려면 두 개의 스키마가 필요합니다. 일반적으로 importing의 스키마를 서로 결합 할 수 있습니다. 그러나 XML에 문제가 있습니다. 에 <media:group>이 포함되어 있고 네임 스페이스에 대한 참조는 <trailer>입니다.

죄송합니다. 해결할 수 없습니다. 최선의 시도는 세 번째 스키마 (<trailer> 정의)를 사용했지만,이 오류는 xmllint ... 다른 사용자도 해결할 수 있습니까?