【问题标题】:XML Schema For A Simple XML Goods-List简单 XML 商品列表的 XML 模式
【发布时间】:2009-05-05 15:35:52
【问题描述】:

我正在尝试编写一个验证以下 XML 的架构:

<category type="rifles">
  <item>
 <name>
   AK47
     </name>
 <description>
   The USSR's chief export back in the day, and the guerrilla's best friend. On African flags than any other symbol.
  </description>
  <cost>
    4000
  </cost>
  <image>
    ak47.jpg
  </image>
  <provenance>
    The USSR.
  </provenance>
  <quantity>
    10000
  </quantity>
</item>

(省略了其他项目元素,多余的标题标签和结束标签。)

并开发了以下架构:

<element name="store">
  <complexType>
 <sequence>
    <element name="category" maxOccurs="unbounded" >
      <complexType>
     <simpleContent>
        <extension base="string">
           <attribute name="type" type="string" />
        </extension>
      </simpleContent>
      <sequence>
        <element name="item" maxOccurs="unbounded" >
           <complexType>
          <sequence>
             <element name="name" type="string"/>
             <element name="description" type="string"/>
             <element name="image" type="string"/>
             <element name="cost" type="number"/>
             <element name="provenence" type="string"/>
             <element name="quantity" type="number"/>
           </sequence>
         </complexType>
           </element>
       </sequence>
     </complexType>
       </element>
     </sequence>
  </complexType>
</element>

使用http://www.xmlme.com/Validator.aspx?mid=83 的验证器,我得到:

架构错误:System.Xml.Schema.XmlSchemaException:复杂类型的内容模型必须包含“注释”(如果存在);后跟零或以下之一:“simpleContent”、“complexContent”、“group”、“choice”、“sequence”或“all”;后跟零个或多个“属性”或“属性组”;后跟零个或一个“anyAttribute”。

我知道这听起来很傻,但是谁能指出我的错误?

【问题讨论】:

    标签: xml xsd


    【解决方案1】:

    试试

    <?xml version="1.0" encoding="utf-8" ?>
    <!--Created with Liquid XML Studio - Developer Pro Edition 7.1.0.1135 (http://www.liquid-technologies.com)-->
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="category">
        <xs:complexType>
          <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="unbounded" name="item">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="name" type="xs:string" />
                  <xs:element name="description" type="xs:string" />
                  <xs:element name="cost" type="xs:unsignedShort" />
                  <xs:element name="image" type="xs:string" />
                  <xs:element name="provenance" type="xs:string" />
                  <xs:element name="quantity" type="xs:unsignedShort" />
                </xs:sequence>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="type" type="xs:string" use="required" />
        </xs:complexType>
      </xs:element>
    </xs:schema>
    

    【讨论】:

    • 是的,XSD 规则有点繁琐,最好使用编辑器(试试 Liquid XML Studio!)
    • 这是一个糟糕的设计,XML 在内容之前有属性,而 XML Schema 在 内容之后有属性定义,因为如果内容中有嵌套元素,属性定义距离它的元素可以是 long 的方式。
    猜你喜欢
    • 2016-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多