XSD 枚举表示
XSD Enumeration representation
我对 XML 和 XSD 方案完全陌生。我有以下 XSD:
<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="OutcomesData">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Outcome">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Title" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
但是,我需要在上面表示 Title(例如 Mr、Mrs、Miss、Ms)的枚举 XSD - 我该怎么做?以下是否正确?
<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="OutcomesData">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Outcome">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Title" type="xs:string" />
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Dr"/>
<xsd:enumeration value="Lord"/>
<xsd:enumeration value="Miss"/>
<xsd:enumeration value="Mr"/>
<xsd:enumeration value="Mrs"/>
<xsd:enumeration value="Ms"/>
<xsd:enumeration value="Sir"/>
</xsd:restriction>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
互联网上的很多示例都提到了 'Simple Type',但我使用的是 'Complex Type' - 这有什么不同吗?
您的架构存在各种语法问题。您有 xsd 个未在架构元素中声明的名称空间前缀,这些可能只是 xs。而且您的元素没有正确嵌套。您可能还想设置默认名称空间和目标名称空间。
您可以只使用 simpleType 作为标题。
在下面找到可能是您所追求的有效架构。
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://Scratch.SO58286917b" targetNamespace="http://Scratch.SO58286917b" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="OutcomesData">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Outcome">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Title">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Dr" />
<xs:enumeration value="Lord" />
<xs:enumeration value="Miss" />
<xs:enumeration value="Mr" />
<xs:enumeration value="Mrs" />
<xs:enumeration value="Ms" />
<xs:enumeration value="Sir" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我对 XML 和 XSD 方案完全陌生。我有以下 XSD:
<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="OutcomesData">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Outcome">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Title" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
但是,我需要在上面表示 Title(例如 Mr、Mrs、Miss、Ms)的枚举 XSD - 我该怎么做?以下是否正确?
<?xml version="1.0"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="OutcomesData">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Outcome">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Title" type="xs:string" />
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Dr"/>
<xsd:enumeration value="Lord"/>
<xsd:enumeration value="Miss"/>
<xsd:enumeration value="Mr"/>
<xsd:enumeration value="Mrs"/>
<xsd:enumeration value="Ms"/>
<xsd:enumeration value="Sir"/>
</xsd:restriction>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
互联网上的很多示例都提到了 'Simple Type',但我使用的是 'Complex Type' - 这有什么不同吗?
您的架构存在各种语法问题。您有 xsd 个未在架构元素中声明的名称空间前缀,这些可能只是 xs。而且您的元素没有正确嵌套。您可能还想设置默认名称空间和目标名称空间。
您可以只使用 simpleType 作为标题。
在下面找到可能是您所追求的有效架构。
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://Scratch.SO58286917b" targetNamespace="http://Scratch.SO58286917b" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="OutcomesData">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Outcome">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Customers">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="Title">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Dr" />
<xs:enumeration value="Lord" />
<xs:enumeration value="Miss" />
<xs:enumeration value="Mr" />
<xs:enumeration value="Mrs" />
<xs:enumeration value="Ms" />
<xs:enumeration value="Sir" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>