为什么我收到此错误“xml中元素目录的内容无效”?

时间:2013-03-08 10:28:21

标签: xml xsd xls

描述资源路径位置类型 cvc-complex-type.2.4.a:从元素' os:catalog '开始发现无效内容。其中一个'{“http://www.example.org/objectshop”:CatalogType}'是预期的。 objectshop.xml / HelloWorld / WebContent第6行XML问题

XSD文件

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
 targetNamespace="http://www.example.org/objectshop"
 elementFormDefault="qualified"
 xmlns:os="http://www.example.org/objectshop">

    <complexType name="ProductType">
        <sequence>
            <element name="productId" type="string"></element>
            <element name="name" type="string"></element>
            <element name="description" type="string"></element>
            <element name="price" type="double"></element>
            <element name="campaignPrice" type="double"></element>
            <element name="icon" type="string"></element>
        </sequence>
    </complexType>

    <complexType name="CustomerType">
        <sequence>
            <element name="userId" type="string"></element>
            <element name="name" type="string"></element>
            <element name="address" type="string"></element>
            <element name="phone" type="string"></element>
            <element name="email" type="string"></element>
        </sequence>
    </complexType>

    <complexType name="CatalogType">
        <sequence>
            <element name="ProductType" type="os:ProductType"
                minOccurs="0" maxOccurs="unbounded">
            </element>
        </sequence>
    </complexType>

    <complexType name="MembersType">
        <sequence>
            <element name="customer" type="os:CustomerType" minOccurs="0" maxOccurs="unbounded"></element>
        </sequence>
    </complexType>

    <element name="objectshop" type="os:ObjectShopType"></element>

    <complexType name="ObjectShopType">
        <sequence>
            <element name="CatalogType" type="os:CatalogType"></element>
            <element name="MembersType" type="os:MembersType"></element>
        </sequence>
    </complexType>
</schema>

XML文件

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="objectshop.xsl" ?>
<os:objectshop xmlns:os="http://www.example.org/objectshop"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://www.example.org/objectshop objectshop.xsd ">
  <os:catalog>
    <os:product>
        <os:productId>1</os:productId>
        <os:name>Achtung Baby - U2</os:name>
        <os:description>Audio CD</os:description>
        <os:price>21.0</os:price>
        <os:campaignPrice>19.0</os:campaignPrice>
        <os:icon>images/u2AchtungBaby.jpg</os:icon>
    </os:product>
    <os:product>
        <os:productId>2</os:productId>
        <os:name>Achtung Baby - U2</os:name>
        <os:description>Audio CD</os:description>
        <os:price>21.0</os:price>
        <os:campaignPrice>19.0</os:campaignPrice>
        <os:icon>images/u2AchtungBaby.jpg</os:icon>
    </os:product>
    <os:product>
        <os:productId>2</os:productId>
        <os:name>Achtung Baby - U2</os:name>
        <os:description>Audio CD</os:description>
        <os:price>21.0</os:price>
        <os:campaignPrice>19.0</os:campaignPrice>
        <os:icon>images/u2AchtungBaby.jpg</os:icon>
    </os:product>
    <os:product>
        <os:productId>4</os:productId>
        <os:name>Achtung Baby - U2</os:name>
        <os:description>Audio CD</os:description>
        <os:price>21.0</os:price>
        <os:campaignPrice>19.0</os:campaignPrice>
        <os:icon>images/u2AchtungBaby.jpg</os:icon>
    </os:product>
  </os:catalog>
  <os:membership>
    <os:customer>
        <os:userId>eteration</os:userId>
        <os:name>Esma Meral</os:name>
        <os:address>ITU andesea</os:address>
        <os:phone>+90 123 456 789</os:phone>
        <os:email>a@b.com</os:email>
    </os:customer>
  </os:membership>
</os:objectshop>

1 个答案:

答案 0 :(得分:0)

您的XSD文件需要格式化如下的XML文件

<os:objectshop>
  <os:CatalogType>
    ...
  </os:CatalogType>
  <os:MembersType>
    ...
  </os:MembersType>
</os:objectshop>

中所定义
 <complexType name="ObjectShopType">
  <sequence>
    <element name="CatalogType" type="os:CatalogType"></element>
    <element name="MembersType" type="os:MembersType"></element>
  </sequence>
</complexType>

我建议更新您的架构以替换

<complexType name="CatalogType">
    <sequence>
      <element name="ProductType" type="os:ProductType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <complexType name="ObjectShopType">
    <sequence>
      <element name="CatalogType" type="os:CatalogType"/>
      <element name="MembersType" type="os:MembersType"/>
    </sequence>
  </complexType>

<complexType name="CatalogType">
    <sequence>
      <element name="product" type="os:ProductType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  <complexType name="ObjectShopType">
    <sequence>
      <element name="catalog" type="os:CatalogType"/>
      <element name="membership" type="os:MembersType"/>
    </sequence>
  </complexType>