0

ここに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>
4

1 に答える 1

0

あなたの混乱がわかります。選択「オプション」は、ほとんどすべての粒子にすることができます。コンポジター ( xs:sequenceor anotherなど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>
于 2013-04-01T12:59:13.047 に答える