속성 값에 따라 단일 유형의 노드에 대해 특정 XSD 유효성 검사를해야합니다. XSD 1.1 및 xsd : alternative가 내 친구 여야합니다. XSD 1.1 대체 사용 문제
하지만 다음 (가장 간단한) 예와
는 :<xsd:complexType name="BaseType">
<xsd:attribute name="type"
type="xsd:string"
use="required" />
</xsd:complexType>
<xsd:complexType name="NamedType">
<xsd:complexContent>
<xsd:extension base="BaseType">
<xsd:attribute name="path"
type="xsd:string"
use="required" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="TaggedType">
<xsd:complexContent>
<xsd:extension base="BaseType">
<xsd:attribute name="tag"
type="xsd:string"
use="required" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:element name="MyRoot">
<xsd:complexType>
<xsd:choice minOccurs="1">
<xsd:element name="MyType"
type="BaseType">
<xsd:alternative test="@type='Named'"
type="NamedType"/>
<xsd:alternative test="@type='Tagged'"
type="TaggedType"/>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
나는 XSD로드하고 (Qt는 4.7.4에서 QXmlSchema 클래스를 사용을하지만 이것이 XSD 문제보다는 Qt는 하나라고 생각) 다음 오류가 발생합니다.
오류 XSDError 알 수없는 위치, 93 줄 74 열 : 대체 요소의 테스트 특성에 잘못된 내용이 포함되어 있습니다 : {@ type = 'Named'}.
나는 대체 시험 조건 및 기타 합리적인 덜 합리적인 변화의 톤에서 "@type EQ '명명'"또한 시도 ... 아무도 통과하지 : 어떤 도움이 많이 주시면 감사합니다/
! 감사!