요소에 속성 값 중 하나와 관련된 특정 하위 항목을 허용하는 XSD를 정의하고 싶습니다. 이 속성 값은 복수 xsd:enumeration
을 사용하여 정의됩니다. 여기XSD는 속성 값에 따라 태그 내용을 제한합니다.
내 XML이 될 수있는 방법입니다 :
<root>
<Conversion type="Phys" />
<Conversion type="Fact">
<Factor>13</Factor>
<Offset>37</Offset>
</Conversion>
<Conversion type="List">
<Item>
<Key>0</Key>
<Value>KEY_0</Value>
</Item>
<Item>
<Key>1</Key>
<Value>KEY_1</Value>
</Item>
</Conversion>
</root>
지금까지, 나는 단지이 3 개 속성과 어린이 (Factor
/Offset
등 만이 3 개 시퀀스를 위해 Conversion
태그를 제한하는 데 성공했다; Item
목록을 ; 아무것도).
<xs:element name="Conversion">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="Item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Key" type="xs:decimal" />
<xs:element name="Value" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:sequence>
<xs:element name="Factor" type="xs:double" />
<xs:element name="Offset" type="xs:double" />
</xs:sequence>
<xs:sequence />
</xs:choice>
<xs:attribute name="Type">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Fact" />
<xs:enumeration value="List" />
<xs:enumeration value="Phys" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
내가 뭘하고 싶은 것은 혼합 속성과 내용을 금지 피하기 위해 내 속성의 값에 따라 자녀를 제한하는 것입니다 : 여기
내 XSD의 비트입니다.
빠른 답장을 보내 주셔서 감사합니다. 무슨 뜻인지 알 겠어. 사실,'Conversion' 태그는 다른 형제와 함께'Variable' 타입의 일부입니다. 따라서 변수의 "유형 변환"을 설명합니다. XSD 1.1을 사용해 보겠습니다. – PlikPlok