2013-09-30 3 views
1

Я знаю, что означает ошибка, но, насколько я вижу, элемент Order правильно объявлен в схеме. Это связано с тем, как я объявляю свое местоположение схемы? Я не знаю, как это сделать. Есть предположения?cvc-elt.1.a: Не удается найти объявление элемента «Заказ»

Мой XML

<?xml version="1.0" encoding="ISO-8859-1"?> 
<Order 
xmlns="http://www.w3schools.com" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://lolteamrecruiter.com order.xsd"> 
    <Customer id="n12">Aaron Rodgers</Customer> 
    <Product> 
    <Name>Old Time Souvenir Football</Name> 
    <SKU>244</SKU> 
    <Quantity>12</Quantity> 
    <Price currency="taco">21.95</Price> 
    <ShipTo> 
     <Street>135 Airline Highway</Street> 
     <City>Green Bay</City> <State>WI</State> <Zip>02882</Zip> 
    </ShipTo> 
    </Product> 
    <Product> 
    <Name>Official Packer Football</Name> 
    <SKU>256</SKU> 
    <Quantity>1</Quantity> 
    <Price currency="USD">France</Price> 
    <Discount>.10</Discount> 
    <ShipTo> 
     <GiftRecipient>Gertrude Rodgers</GiftRecipient> 
     <Street>271 Old Homestead Way</Street> 
     <City>San Francisco</City> <State>CA</State> <Zip>02895</Zip> 
    </ShipTo> 
    <GiftMessage>Happy Mothers Day to a great Mom! Love, Aaron</GiftMessage> 
    </Product> 
    <Subtotal currency='USD'>263.40</Subtotal> 
    <Tax rate="7.0" 
     currency='USD'>18.44</Tax> 
    <Shipping method="USPS" currency='USD'>8.95</Shipping> 
    <Total currency='USD' >290.79</Total> 
</Order> 

Мой XSD

<?xml version="1.0"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> 

<xs:element name="Order"> 
    <xs:complexType> 
    <xs:sequence> 
     <xs:element name="Customer" type="xs:string"> 
     <xs:complexType> 
      <xs:attribute name="id" type="xs:string" use="required"/> 
     </xs:complexType> 
     </xs:element> 
     <xs:element name="Product" minOccurs="1" maxOccurs="unbounded"> 
     <xs:complexType> 
      <xs:sequence> 
       <xs:element name="Name" type="xs:string"/> 
       <xs:element name="SKU" type="xs:string"/> 
       <xs:element name="Quantity" type="xs:string"/> 
       <xs:element name="Price" type="currRestrict"> 
        <xs:complexType> 
         <xs:attribute name="currency" type="currencyType" use="required"/> 
        </xs:complexType>    
       </xs:element> 
       <xs:element name="Discount" type="xs:string" minOccurs="0" maxOccurs="1"/> 
       <xs:element name="ShipTo"> 
         <xs:complexType> 
         <xs:sequence> 
          <xs:element name="GiftRecipient" type="xs:string"/> 
          <xs:element name="street" type="xs:string"/> 
          <xs:element name="City" type="xs:string"/> 
          <xs:element name="State" type="xs:decimal"/> 
          <xs:element name="Zip" type="xs:decimal"/> 
         </xs:sequence> 
         </xs:complexType> 
       </xs:element> 
       <xs:element name="GiftMessage" type="xs:string" minOccurs="0" maxOccurs="1"/> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
     <xs:element name="Subtotal" type="xs:decimal"> 
     <xs:complexType> 
      <xs:attribute name="currency" type="currencyType" use="required"/> 
     </xs:complexType>    
     </xs:element> 
     <xs:element name="Tax" type="xs:decimal"> 
     <xs:complexType> 
      <xs:attribute name="currency" type="currencyType" use="required"/> 
      <xs:attribute name="rate" type="currencyType"/> 
     </xs:complexType>    
     </xs:element> 
     <xs:element name="Shipping" type="xs:string"> 
     <xs:complexType> 
      <xs:attribute name="currency" type="currencyType" use="required"/> 
      <xs:attribute name="method" type="methodType" default="UPS"/> 
     </xs:complexType>    
     </xs:element> 
     <xs:element name="Total" type="xs:decimal"> 
     <xs:complexType> 
      <xs:attribute name="currency" type="currencyType" use="required"/> 
     </xs:complexType>    
     </xs:element> 
    </xs:sequence> 
    </xs:complexType> 
</xs:element> 

<xs:simpleType name="currencyType"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="USD"/> 
     <xs:enumeration value="CAN"/> 
     <xs:enumeration value="GBP"/> 
    </xs:restriction> 
</xs:simpleType> 

<xs:simpleType name="methodType"> 
    <xs:restriction base="xs:string"> 
     <xs:enumeration value="UPS"/> 
     <xs:enumeration value="USPS"/> 
     <xs:enumeration value="Overnight"/> 
    </xs:restriction> 
</xs:simpleType> 

<xs:simpleType name="currRestrict"> 
    <xs:restriction base="xs:decimal"> 
    </xs:restriction> 
</xs:simpleType> 

</xs:schema> 
+0

Возможный дубликат [cvc-elt.1: Не удается найти объявление элемента «MyElement»] (http://stackoverflow.com/questions/13310637/cvc-elt-1-cannot-find-the-declaration- of-element-myelement) – crownjewel82

ответ

2

Ваш экземпляр документа имеет xmlns="http://www.w3schools.com", но ваша схема не имеет TargetNamespace. Поэтому схема дает объявление элемента с именем Order в домене no, но валидатор ищет декларацию элемента с именем Order в пространстве имен http://www.w3schools.com.

Добавить targetNamespace="http://www.w3schools.com" в xs:schema открывающий тег и исправить xsi:schemaLocation для соответствия - в настоящее время используется неправильный URI пространства имен.

xsi:schemaLocation="http://www.w3schools.com order.xsd" 

Пространство имен документа экземпляра, в целевое пространство схемы и пространства имен, которое отображение на схеме с xsi:schemaLocation все должны быть одинаковыми.

+0

удаление xmlns = "http://www.w3schools.com" не решает проблему. Если я не пойму, что вы говорите. – user2789380

+0

Добавлено целевое пространство имен в открывающий тег, по-прежнему не работает. – user2789380

+0

@ user2789380 Я не обратил внимания на сопоставление схемы на первый взгляд - это также необходимо исправлять. –

Смежные вопросы