많은 사이트를 통과 한 다음 Xml 스키마를 만들었습니다. 여기서 다른 특성은 특성 값에 따라 달라집니다.XML 유효성 검사가 다른 특성을 기반으로 하나의 특성을 확인하지 않음
아래의 XML 파일 :
<?xml version="1.0"?>
<Main>
<Matter kind="fruits" calories="10" name="apple" quantity="10" color="red"/>
<Matter kind="car" brand="ford" name="ikon" quantity="1" color="red"/>
<Matter kind="country" continent="Asia" name="japan"/>
</Main>
종류의 속성은 과일, 차 및 국가를 가질 수 있습니다. 그리고 속성에 따라 국가 값과 같이 다른 매개 변수가 필요합니다. 대륙 속성이 필요합니다.
그리고 아래의 XSD 파일입니다
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="Main">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="Matter"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Matter">
<xs:complexType>
<xs:attribute name="name" use="required" type="xs:NCName"/>
<xs:alt cond="@kind='fruits'">
<xs:attribute name="kind" use="required" type="xs:NCName" fixed="fruits"/>
<xs:attribute name="color" type="xs:NCName"/>
<xs:attribute name="quantity" type="xs:integer"/>
</xs:alt>
<xs:alt cond="@kind='car'">
<xs:attribute name="kind" use="required" type="xs:NCName" fixed="car"/>
<xs:attribute name="brand" type="xs:NCName"/>
<xs:attribute name="quantity" type="xs:integer"/>
<xs:attribute name="color" type="xs:NCName"/>
</xs:alt>
<xs:alt cond="@kind='country'">
<xs:attribute name="kind" use="required" type="xs:NCName" fixed="country"/>
<xs:attribute name="continent" type="xs:NCName" use="required"/>
</xs:alt>
</xs:complexType>
</xs:element>
</xs:schema>
나는 위의 XSD와 XML 파일의 유효성을 검사하고
, 나는 요소 고도가 유효하지 않은 잘못, 또는 너무 자주 발생한다 "고 오류를 얻고있다.나 적절한 XSD로, 위의 파일을 검증하기 위해 도와주세요
xs : alt는 유효한 XSD 구문이 아닙니다. Xsd는 "모양"의 유효성 만 검사 할 수있는 문서의 내용에 따라 유효성을 검사하지 않습니다. 나는 xs : alt가 스키마의 확장일지도 모른다고 생각한다. 그렇다면 이것을 처리하는 방법을 이해하는 validator를 사용해야한다. XSD에 정의되어 있지 않은 구문 (키워드)을 사용하기 때문에 문서는 유효한 스키마가 아닙니다. – Pawel