cvc-elt.1.a:找不到元素'Order'的声明

时间:2013-09-30 21:21:34

标签: xml xsd

我知道错误意味着什么,但据我所知,Order元素在架构中正确声明。这与我声明我的架构位置的方式有关吗?我不知道如何修复声明。有什么想法吗?

我的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>

1 个答案:

答案 0 :(得分:2)

您的实例文档有xmlns="http://www.w3schools.com"但您的架构没有targetNamespace。因此,模式在 no 命名空间中声明了名为Order的元素,但验证器正在寻找Order中名为http://www.w3schools.com的元素的声明。命名空间。

targetNamespace="http://www.w3schools.com"添加到xs:schema开始标记并修复xsi:schemaLocation以匹配 - 它当前使用的是错误的命名空间URI。

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

实例文档的命名空间,架构的targetNamespace以及映射到xsi:schemaLocation架构的命名空间必须全部相同。