XML. XSD недопустимый элемент

1

Привет, у меня есть xml, который я пытаюсь использовать со схемой, которую я создал, но когда я пытаюсь разобрать xml, я получаю сообщение об ошибке ниже:

The element 'PartnerPSTNTransfer' in namespace 'http://localhost/Orders-PartnerPSTNTransfer-v1-0' has invalid child element 'InstallationAddress' in namespace 'http://localhost/Orders-PartnerPSTNTransfer-v1-0'. List of possible elements expected: 'Configuration' in namespace 'http://localhost/Orders-PartnerPSTNTransfer-v1-0'.

Ниже приведен мой XML, который я создал, и связанные с ним схемы:

XML:

<p:PartnerPSTNTransfer xmlns:padsl="http://localhost/Orders-PartnerPSTN-v1.0" 
                       xmlns:p="http://localhost/Orders-PartnerPSTNTransfer-v1-0" 
                       xmlns:a="http://localhost/Orders-Address-v1-0" 
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                       xmlns:c="http://localhost/Orders-Connection-v1-0">
  <p:TelephoneNumber>01224507392</p:TelephoneNumber>
  <p:StartDate>2014-10-25</p:StartDate>
  <p:Postcode>co27pe</p:Postcode>
  <p:InstallationAddress>
    <a:NameNumber>10</a:NameNumber>
    <a:Line1>Somewhere Road</a:Line1>
    <a:City>Somewhere City</a:City>
    <a:County>Somewhere County</a:County>
    <a:Postcode>co2 7pe</a:Postcode>
  </p:InstallationAddress>
  <p:Configuration>
    <padsl:Package>Data Only</padsl:Package>
    <padsl:Feature>F0 F1 F2</padsl:Feature>
    <padsl:Contract>Monthly_12</padsl:Contract>
  </p:Configuration>
</p:PartnerPSTNTransfer>

PartnerPSTNTransfer xsd:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="PartnerPSTNTransfer"
    targetNamespace="http://localhost/Orders-PartnerPSTNTransfer-v1-0"
    elementFormDefault="qualified"
    xmlns="http://localhost/Orders-PartnerPSTNTransfer-v1-0"
    xmlns:mstns="http://localhost/Orders-PartnerPSTNTransfer-v1-0"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:a="http://localhost/Orders-Address-v1-0"
    xmlns:padsl="http://localhost/Orders-PartnerPSTN-v1.0"
    xmlns:c="http://localhost/Orders-Common-v1-0"
    xmlns:conn="http://localhost/Orders-Connection-v1-0">

  <xs:import namespace="http://localhost/Orders-Common-v1-0" schemaLocation="../../Common.xsd" />
  <xs:import namespace="http://localhost/Orders-Address-v1-0" schemaLocation="../../Address.xsd" />
  <xs:import namespace="http://localhost/Orders-PartnerPSTN-v1.0" schemaLocation="PartnerPSTN.xsd" />
  <xs:import namespace="http://localhost/Orders-Connection-v1-0" schemaLocation="../Connection.xsd" />

  <xs:complexType name="PartnerPSTNTransfer">
    <xs:sequence>
      <xs:element name="TelephoneNumber" type="c:Landline" />
      <xs:element name="StartDate" type="xs:date" />
      <xs:element name="Postcode" type="c:RequiredString" />
      <xs:element name="InstallationAddress" type="a:Address" />
      <xs:element name="Configuration" type="padsl:PartnerPSTNConfiguration" />
    </xs:sequence>
  </xs:complexType>

  <xs:element name="PartnerPSTNTransfer" type="PartnerPSTNTransfer"></xs:element>
</xs:schema>

PSTNTransfer xsd:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="PartnerPSTN"
    targetNamespace="http://localhost/Orders-PartnerPSTN-v1.0"
    elementFormDefault="qualified"
    xmlns="http://localhost/Orders-PartnerPSTN-v1.0"
    xmlns:mstns="http://localhost/Orders-PartnerPSTN-v1.0"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:a="http://localhost/Orders-Address-v1-0"
    xmlns:c="http://localhost/Orders-Common-v1-0" >

  <xs:import namespace="http://localhost/Orders-Common-v1-0" schemaLocation="../../Common.xsd"/>

  <xs:simpleType name="Contract">
    <xs:restriction base="xs:token">
      <xs:enumeration value="Monthly_12"></xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="PackageOption">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Data Only" />
      <xs:enumeration value="Evening and Weekend" />
      <xs:enumeration value="1000 Anytime" />
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="FeatureOption">
    <xs:list>
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:enumeration value="F0"/>
          <xs:enumeration value="F0A"/>
          <xs:enumeration value="F0B"/>
          <xs:enumeration value="F0C"/>
          <xs:enumeration value="F1"/>
          <xs:enumeration value="F2"/>
          <xs:enumeration value="F2A"/>
          <xs:enumeration value="F3"/>
          <xs:enumeration value="F3A"/>
          <xs:enumeration value="F3B"/>
          <xs:enumeration value="F3C"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:list>
  </xs:simpleType>

  <xs:complexType name="PartnerPSTNConfiguration">
    <xs:sequence>
      <xs:element name="Package" type="PackageOption" />
      <xs:element name="Feature" type="FeatureOption" />
      <xs:element name="Contract" type="Contract" />
    </xs:sequence>
  </xs:complexType>
</xs:schema>

У меня есть элемент InstallationAddress, объявленный в нужном месте перед элементом конфигурации, поэтому я смущен тем, почему он выбрал эту ошибку.

Теги:
xsd

1 ответ

1
Лучший ответ

Используйте xsi:schemaLocation чтобы намекнуть на процессор XML, что XSD для пространства имен http://localhost/Orders-PartnerPSTNTransfer-v1-0 - PartnerPSTNTransfer.xsd:

<p:PartnerPSTNTransfer xmlns:padsl="http://localhost/Orders-PartnerPSTN-v1.0" 
                       xmlns:p="http://localhost/Orders-PartnerPSTNTransfer-v1-0" 
                       xmlns:a="http://localhost/Orders-Address-v1-0" 
                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                       xmlns:c="http://localhost/Orders-Connection-v1-0"
                       xsi:schemaLocation="http://localhost/Orders-PartnerPSTNTransfer-v1-0  
                                           PartnerPSTNTransfer.xsd">

После того, как вы сделали вышеупомянутое изменение и завершаете оборванные ссылки на XSD, не включенные в ваш вопрос, я могу проверить ваш XML файл. Возможно, более старая версия вашего XSD получает сообщение из неожиданного места на вашем жестком диске. Будьте осторожны с внешними каталогами XML или другими инструментальными механизмами для связывания экземпляров XML-документов с XSD.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню