0

XSD を使用して XML ドキュメントを検証しようとしています。デフォルトを含むすべてに名前空間を提供しようとしました。ただし、エラーは解決しません。誰かが何がうまくいかないのか教えてくれれば、それは非常に高く評価されます

    <?xml version="1.0" encoding="UTF-8" ?>
    <!-- <!DOCTYPE people SYSTEM "validator.dtd"> -->

    <people 
    xmlns:cmuq="http://www.cmu.edu/ns/students"
    xmlns="http://www.cmu.edy/ns/blank"
    xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instance"
    xsi:schemaLocation="student.xsd"
    >
        <cmuq:student>
            <name>John</name>
            <course>Computer Technology</course>
            <semester>6</semester>
            <scheme>E</scheme>
        </cmuq:student>

        <cmuq:student>
            <name>Foo</name>
            <course>Industrial Electronics</course>
            <semester>6</semester>
            <scheme>E</scheme>
        </cmuq:student>
    </people>   

XSD

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.cmu.edu/ns/blank"
targetNamespace="http://www.cmu.edu/ns/students">
    <xs:element name="people">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="student" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="name" type="xs:string" />
                            <xs:element name="course" type="xs:string" />
                            <xs:element name="semester">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="1" />
                                        <xs:enumeration value="2" />
                                        <xs:enumeration value="3" />
                                        <xs:enumeration value="4" />
                                        <xs:enumeration value="5" />
                                        <xs:enumeration value="6" />
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                            <xs:element name="scheme">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:pattern value = "E|C" />
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>  

そのエラーを解決する方法を教えてください


イアン・ロバーツの回答後に更新

XSD<schema>タグ:

  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns="http://www.cmu.edu/ns/blank"
    targetNamespace="http://www.cmu.edu/ns/blank"
    elementFormDefault="qualified"> 

<people>XMLタグのルート。

 <people
    xmlns="http://www.cmu.edu/ns/blank"
    xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.cmu.edu/ns/blank student.xsd">  

まだ検証されていません。今のところ、追加するという考えを捨てましたxmlns:cmuqが、問題は解決しません。>

4

1 に答える 1

1

peopleそこにあるスキーマは、名前空間(スキーマのターゲット名前空間)の要素と、名前空間のないすべてのネストされた要素を宣言しhttp://www.cmu.edu/ns/studentsます(使用しないためelementFormDefault)。だからそれはする必要があります

<cmuq:people
  xmlns:cmuq="http://www.cmu.edu/ns/students"
  xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://www.cmu.edu/ns/students student.xsd"
>
    <student>

また、単一のスキーマ アドレスだけでなく、ペアxsi:schemaLocationのリストである必要があることにも注意してください。この属性は、異なるスキーマを各名前空間に関連付けることができます。namespaceUri schema

于 2013-05-10T08:20:50.077 に答える