2013-03-21 3 views
3

임베디드 XML 스키마 (스키마가 데이터와 동일한 XML 내에서 정의되는 위치)를 작성해야합니다.유효한 인라인 XML 스키마는 어떻게 작성합니까?

올바르게 수행하는 방법을 이해하려고 시도하고 있지만 지금까지 유효성 검사를 통과하는 간단한 예제를 얻지 못했습니다. 여기 내가 인라인 스키마가있는 간단한 XML로 사용하려고 시도했습니다.
(참고 : XML 구조 (예 : 루트/항목)가 이미 야생 상태이므로 XML 형식을 사용할 수 없도록 제한되었습니다. 데이터 요소에 대한 네임 스페이스.)

<?xml version="1.0"?> 
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:noNamespaceSchemaLocation="#mySchema"> 
    <xs:schema id="mySchema" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="root"> 
     <xs:complexType> 
     <xs:sequence> 
      <xs:element name="item" type="xs:string" 
         maxOccurs="unbounded" minOccurs="0"/> 
     </xs:sequence> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 
<item>String 1</item> 
<item>String 2</item> 
<item>String 3</item> 
</root> 

하지만이 w3.org XML Schema Validator을 통해 그 XML을 실행할 때 XML은 다음과 같은 오류 메시지가이 같은 <xs:schema>를 볼 것으로 예상되지 않았 음을 말과 함께, 검증 실패 자식 요소! [{없음} 기대 루트 : 요소 {없음} 여기에 (1) 을 허용하지 스키마 요소 {http://www.w3.org/2001/XMLSchema} : 잘못된 CVC-복잡한 type.1.2.4 당

항목을, $] :

Q : 유효성 검사를 통과하는 인라인 스키마 정의가있는 간단한 XML 문서의 예를 보여줄 수 있습니까?

+0

제한을 사용하셨습니까? 열거 형과 같습니다. – PSL

+1

존경심, 나는 인라인 스키마가 어디에서나 지원된다고 생각하지 않습니다. 사실, 나는 그들이 거의 지원되지 않는다고 믿는다. –

+0

우연히 UpVote 대신 내 스마트 폰에서이 질문에 투표했습니다. 개정 할 수 없어 투표 수가 잠겼습니다. 내 표를 어떻게 반전합니까? @Daryn이 편집하면 다시 되돌릴 수 있습니까? – PSL

답변

3

root 자식이 자식으로 xs:schema 요소를 갖고있는 경우 스키마에서 이러한 자식을 허용해야합니다. 허용하는 가장 쉬운 방법은 와일드 카드를 사용하는 것입니다.

<xs:sequence> 
    <xs:any processContents="skip" namespace="http://www.w3.org/2001/XMLSchema" 
      minOccurs="0" maxOccurs="1"/> 
    <xs:element name="item" type="xs:string" 
      maxOccurs="unbounded" minOccurs="0"/> 
</xs:sequence> 
+0

감사합니다. @Michael; 나는 그것을 시도했지만 유효성 검사가 실패했기 때문에 유효성 검사가 실패합니다 ("유효하지 않음 : 유형 없음에 대한 비 결정적 콘텐츠 모델 : {Wildcard : #any, skip}/{None} : item"). 그럼에도 불구하고 잠재적 인 가능성이있는 방향으로 느껴지지만 ... xsd가 ""을 제외하고는 어떻게 되겠습니까? 가능하면 누구나 알 수 있습니까? – Daryn

+0

질문 : http://stackoverflow.com/a/6468853/135114, 해결책을 얻지 못했습니다.) – Daryn

+1

나는 거의 실수를하지 않았습니다. * 거의 * 같은 * @ 마이클.하지만 당신이 대답 (내가 간과) 그것이 작동하게 만든 것은'namespace = "http://www.w3.org/2001/XMLSchema"입니다. 그것은' Daryn