Схема XML для простого списка товаров XML - PullRequest
2 голосов
/ 05 мая 2009

Я пытаюсь написать схему, которая будет проверять следующий 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'; за которым следует ноль или более 'attribute' или 'attributeGroup'; за которым следует ноль или один «любой атрибут».

Я знаю, это может звучать глупо, но кто-нибудь может указать на мою ошибку?

1 Ответ

3 голосов
/ 05 мая 2009

Попробуйте

<?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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...