Memvalidasi File XML dengan XSD memberikan kesalahan yang berbeda

Saya mencoba sepanjang waktu untuk memvalidasi file XML dengan XSD dan mencoba berbagai opsi menambahkan elemen, urutan, tipe kompleks dan tidak ada yang menyelesaikan masalah.

Bisakah tolong seseorang memberi tahu saya, apa sebenarnya masalahnya? Terima kasih.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<literature
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:NoNameSpaceSchemaLocation="exerciseLiteraturSchema.xsd">

    <!-- First reference -->
    <reference number="1">
        <author>
            <firstname>Ron</firstname>
            <name>Jefferson</name>
        </author>
        <title>XML for Beginners</title>
        <editor>McGraw Hill</editor>
        <!-- <isbn>12-3344-567-00</isbn> -->
    </reference>

</literature>

<?xml version="1.0" encoding="UTF-8"?>

<xsd:element name="literature">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="reference">
                <xsd:complexType>
                    <xsd:sequence>
                        <xsd:element name="author">
                            <xsd:complexType>
                                <xsd:sequence>
                                    <xsd:element name="title" type="xsd:string" />
                                    <xsd:element name="editor" type="xsd:string" />
                                </xsd:sequence>
                            </xsd:complexType>
                        </xsd:element>
                    </xsd:sequence>
                </xsd:complexType>
            </xsd:element>
        </xsd:sequence>
        <xsd:attribute name="number" type="xsd:integer" />
    </xsd:complexType>
</xsd:element>


person kannzzmm2    schedule 18.06.2019    source sumber


Jawaban (1)


Kecuali xsi:noNameSpaceSchemaLocation="exerciseLiteraturSchema.xsd" Anda bisa mendapatkan hasil yang memuaskan dengan menggunakan XSD berikut:

XML:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<literature
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    <!-- First reference -->
    <reference number="1">
        <author>
            <firstname>Ron</firstname>
            <name>Jefferson</name>
        </author>
        <title>XML for Beginners</title>
        <editor>McGraw Hill</editor>
        <!-- <isbn>12-3344-567-00</isbn> -->
    </reference>

</literature>

XSD:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" 
           xmlns:xs="http://www.w3.org/2001/XMLSchema" 
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <xs:element name="literature">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="reference">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="author">
                                <xs:complexType>
                                    <xs:sequence>
                                        <xs:element name="firstname" type="xs:string" />
                                        <xs:element name="name" type="xs:string" />
                                    </xs:sequence>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="title" type="xs:string" />
                            <xs:element name="editor" type="xs:string" />
                        </xs:sequence>
                        <xs:attribute name="number" type="xs:integer" />
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

XSD ini memvalidasi XML di atas.
Saya memindahkan elemen titledan editor dari elemen author dan menambahkan elemen firstname dan name sebagai gantinya.

person zx485    schedule 18.06.2019
comment
Terima kasih atas bantuan Anda, tetapi bagaimana File XML mengetahui Skema mana yang akan digunakan jika tidak ditentukan di awal? - person kannzzmm2; 19.06.2019
comment
XSD biasanya merupakan parameter validator. Jika tidak, itu harusnya berfungsi dengan atribut xsi:noNameSpaceSchemaLocation="exerciseLiteraturSchema.xsd". Jadi tambahkan ke file dan periksa dengan validator Anda. - person zx485; 19.06.2019