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>