Я практикую схемы кодирования для XML. До сих пор я добился прогресса. Когда я пытаюсь проверить свою схему, я получаю 3 ошибки, которые я не понимаю.
customer.xml
<customerinfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="customer.xsd">
<customer reference="A1">
<fullname>
<title>Miss</title>
<firstname>Summer</firstname>
<middlename>K</middlename>
<lastname>Simpson</lastname>
</fullname>
<address>
<street>12 Blood Street</street>
<suburb>Melbourne</suburb>
<postcode>1111</postcode>
<state>VIC</state>
</address>
<contact>
<phone>123456789</phone>
<phone>123456789</phone>
<phone>123456789</phone>
</contact>
<meter number="1">
<reading>
<date>2019-10-03</date>
<meterread>100</meterread>
<amtdue>100.00</amtdue>
<paymentdate>2019-10-03</paymentdate>
<amtpaid>100.00</amtpaid>
</reading>
<reading>
<date>2019-10-03</date>
<meterread>100</meterread>
<amtdue>100.00</amtdue>
<paymentdate>2019-10-03</paymentdate>
<amtpaid>100.00</amtpaid>
</reading>
</meter>
</customer>
<customer reference="A2">
<fullname>
<title>Miss</title>
<firstname>April</firstname>
<middlename>P</middlename>
<lastname>Duck</lastname>
</fullname>
<address>
<street>32 Cardigan Street</street>
<suburb>Wonderland</suburb>
<postcode>9000</postcode>
<state>SA</state>
</address>
<contact>
<phone>123456789</phone>
</contact>
<meter number="2">
<reading>
<date>2019-10-03</date>
<meterread>100</meterread>
<amtdue>100.00</amtdue>
<paymentdate>2019-10-03</paymentdate>
<amtpaid>100.00</amtpaid>
</reading>
</meter>
</customer>
</customerinfo>
customer.xsd
<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="customerinfo">
<xs:complexType>
<xs:sequence>
<xs:element name="customer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="customer">
<xs:complexType>
<xs:sequence>
<xs:element name="fullname"/>
<xs:element name="address"/>
<xs:element name="contact"/>
<xs:element name="meter"/>
</xs:sequence>
<xs:attribute name="reference" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="fullname">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="middlename" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="address">
<xs:complexType>
<xs:sequence>
<xs:element name="street" type="xs:string"/>
<xs:element name="suburb" type="xs:string"/>
<xs:element name="postcode" type="xs:integer"/>
<xs:element name="state" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="contact">
<xs:complexType>
<xs:sequence>
<xs:element name="phone" type="xs:integer" maxOccurs="3"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="meter">
<xs:complexType>
<xs:sequence>
<xs:element name="reading" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="number" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="reading">
<xs:complexType>
<xs:sequence>
<xs:element name="date" type="xs:date"/>
<xs:element name="meterread" type="xs:integer"/>
<xs:element name="amtdue" type="xs:decimal"/>
<xs:element name="paymentdate" type="xs:date"/>
<xs:element name="amtpaid" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
ошибки:
Атрибут 'ссылка' должен отображаться в элементе 'customerinfo'.
Я не понимаю этого, потому что я указал ссылку на атрибут
Обнаружен недопустимый контент, начиная с элемента 'customer'. Ожидается одно из '{fullname}'.
Я не понимаю этого, потому что указал полное имя элемента
Обнаружено недопустимое содержимое, начиная с элемента 'чтение. В этот момент никаких дочерних элементов не ожидается.
Я тоже не понимаю этого, потому что у чтения есть множество детей, таких как дата, метраж, amdue, paymentdate и amtpaid?
Изменить: мне удалось исправить ошибки выше, однако теперь я получаю новую ошибку. Я также обновил свой xsd-файл в сообщении.
Обнаружен недопустимый контент, начиная с элемента 'customer'. В этот момент не ожидается дочерний элемент.
У элемента элемента есть дочерние элементы: полное имя, адрес, контакт и счетчик.