2

エラーの意味はわかりますが、私が見る限り、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>
4

1 に答える 1

3

インスタンス ドキュメントにはありxmlns="http://www.w3schools.com"ますが、スキーマには targetNamespace がありません。したがって、スキーマは名前空間で名前が付けられていない要素の宣言を提供しますOrderOrderバリデーターは名前空間で名前が付けられた要素の宣言を探していhttp://www.w3schools.comます。

開始タグに追加targetNamespace="http://www.w3schools.com"し、一致するように修正します。現在、間違った名前空間 URI を使用しています。xs:schemaxsi:schemaLocation

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

インスタンス ドキュメントの名前空間、スキーマの targetNamespace、およびスキーマにマッピングする名前空間xsi:schemaLocationはすべて同じである必要があります。

于 2013-09-30T21:24:04.753 に答える