Ошибки XML-схемы при проверке - PullRequest
1 голос
/ 03 ноября 2019

Я практикую схемы кодирования для 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'. В этот момент не ожидается дочерний элемент.

У элемента элемента есть дочерние элементы: полное имя, адрес, контакт и счетчик.

1 Ответ

1 голос
/ 03 ноября 2019
  1. У вас есть атрибут reference в элементе customer, но нет в элементе customerinfo.

  2. В схеме указано customerinfo элемент должен начинаться с fullname дочернего элемента, но в этом экземпляре дочерний элемент называется customer.

  3. Схема говорит, что элемент meter должен иметь один reading child, но в вашем экземпляре несколько reading children.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...