我有以下XML可能性:
<Platform>iTunes</Platform>
<Platform IsSubscriptionPlatform="True">Netflix</Platform>
这对于正确的XSD元素是什么?到目前为止,我有:
<xs:element name="Platform">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="IsSubscriptionPlatform" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="(True|False)?" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
我如何进一步将平台值的限制添加为“iTunes”或“Netflix”。也就是说,我会在哪里添加:
<xs:restriction base="xs:string">
<xs:enumeration value="iTunes" />
<xs:enumeration value="Netflix" />
</xs:restriction>
答案 0 :(得分:1)
您的XSD已修改为接受您的XML有效:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:simpleType name="PlatformCompany">
<xs:restriction base="xs:string">
<xs:enumeration value="iTunes" />
<xs:enumeration value="Netflix" />
</xs:restriction>
</xs:simpleType>
<xs:element name="Platform">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="PlatformCompany">
<xs:attribute name="IsSubscriptionPlatform" use="optional">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="(True|False)?" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
请注意,您@IsSubscriptionPlatform
的声明允许它为空。如果您不想这样,请删除?
或使用枚举。或者,如果您可以自由更改XML设计,请改为使用true
和false
,并简化您的声明:
<xs:attribute name="IsSubscriptionPlatform" use="optional" type="xs:boolean"/>