다음 XSD는 요소의 name
특성이 fruits
요소에 fruit
의 names
만 포함해야 함을 확인해야합니다.이 xsd의 문제점은 무엇입니까?
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType name="Fruit">
<xsd:attribute name="name" type="xsd:string"/>
</xsd:complexType>
<xsd:complexType name="FruitArray">
<xsd:sequence>
<xsd:element name="fruit" minOccurs="0" maxOccurs="unbounded" type="Fruit"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="fruit_basket">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="fruits" minOccurs="1" maxOccurs="1" type="FruitArray"/>
<xsd:element name="favourite_fruit" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:attribute name="name" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:key name="fruit_lookup">
<xsd:selector xpath="fruits/fruit"/>
<xsd:field xpath="@name"/>
</xsd:key>
<xsd:keyref name="favourite_fruit_constraint" refer="fruit_lookup">
<xsd:selector xpath="favourite_fruit"/>
<xsd:field xpath="@name"/>
</xsd:keyref>
</xsd:element>
</xsd:schema>
다음 XML은 유효해야하지만 검증 할 때 유효하지 않습니다 다음은 XSD는
<fruit_basket>
<fruits>
<fruit name="Apple"/>
<fruit name="Peach"/>
<fruit name="Bananna"/>
</fruits>
<favourite_fruit name="Apple"/>
</fruit_basket>
어떤 아이디어? 내 직감은 내 xpath에 문제가 있다는 것입니다. 추신 : 나는 XML을 xsd에 대해 유효성을 검사하기 위해 lxml을 사용하고 있습니다.
XML을 표시 할 수 있습니까? – Oded
http://www.w3.org/2001/03/webdata/xsv에있는 W3C 스키마 유효성 검사기는 정상이라고 말합니다. 따라서 귀하의 도구가 고장 났거나 너무 까다 롭다고 생각합니다. – skaffman
xml은 위의 게시물에 있습니다. – Johan