XSD错误如下

  • 本文关键字:错误 XSD xsd
  • 更新时间 :
  • 英文 :


这里是xml

     <?xml version="1.0" encoding="utf-8"?>
    <Modules xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="XSDQu3.xsd">
        <Module code="CSE1246">
            <Name shortName="ADSA">Applied Data Structures and Algorithms</Name>
            <Level>1</Level>
            <ResourcePerson>
                <Name>Anwar</Name>
                <Surname>Chutoo</Surname>
            </ResourcePerson>
        </Module>
    <Module code="CSE2041">
    <Name shortName="Web 2">Web Technologies II</Name>
        <Level>2</Level>
        <ResourcePerson>
            <FullName>Shehzad Jaunbuccus</FullName>
        </ResourcePerson>
    </Module>
</Modules>

我有一个错误的名称。资源人员可以包含全名或姓名和姓氏。请帮助。这部分我做对了吗

xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:complexType name="NameNSurnameType">
        <xs:sequence>
          <xs:element name="Name" type="xs:string"/>
          <xs:element name="Surname" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="ResourcePersonType">
        <xs:sequence>
            <xs:choice>
                <xs:element name="NameNSurnameType" type="NameNSurnameType"/>
                <xs:element name="FullName" type="xs:string"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:attribute name="code">
        <xs:simpleType>
            <xs:restriction base="xs:ID">
                <xs:pattern value="CSE(d{4})"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:complexType name="nameType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="shortName" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:element name="Modules">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="Module" minOccurs="1" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="Name" type="nameType"/>
                        <xs:element name="Level" type="xs:positiveInteger"/>
                        <xs:element name="ResourcePerson" type="ResourcePersonType"/>
                    </xs:sequence>
                    <xs:attribute ref="code" use="required"/>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    </xs:element>
  </xs:schema>

我明白你的困惑;选择"选项"几乎可以是任何粒子;合成器(例如xs:sequence或另一个xs:choice)将匹配描述。您最少需要做的是更改以下定义。

<xs:complexType name="ResourcePersonType">
    <xs:sequence>
        <xs:choice>
            <xs:sequence>
                <xs:element name="Name" type="xs:string"/>
                <xs:element name="Surname" type="xs:string"/>
            </xs:sequence>
            <xs:element name="FullName" type="xs:string"/>
        </xs:choice>
    </xs:sequence>
</xs:complexType>

如果你想引用这个名字,就像你想用全局复杂类型那样,那么你可以创建一个组并引用它。下面是与上述场景一致的修改后的XSD:

<?xml version="1.0" encoding="utf-8" ?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:group name="NameNSurnameType">
        <xs:sequence>
            <xs:element name="Name" type="xs:string"/>
            <xs:element name="Surname" type="xs:string"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="ResourcePersonType">
        <xs:sequence>
            <xs:choice>
                <xs:group ref="NameNSurnameType"/>
                <xs:element name="FullName" type="xs:string"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:attribute name="code">
        <xs:simpleType>
            <xs:restriction base="xs:ID">
                <xs:pattern value="CSE(d{4})"/>
            </xs:restriction>
        </xs:simpleType>
    </xs:attribute>
    <xs:complexType name="nameType">
        <xs:simpleContent>
            <xs:extension base="xs:string">
                <xs:attribute name="shortName" type="xs:string"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:element name="Modules">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="Module" minOccurs="1" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="Name" type="nameType"/>
                            <xs:element name="Level" type="xs:positiveInteger"/>
                            <xs:element name="ResourcePerson" type="ResourcePersonType"/>
                        </xs:sequence>
                        <xs:attribute ref="code" use="required"/>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

最新更新