XML Schema元素混淆

时间:2014-08-20 08:06:34

标签: xml xsd sequence complextype

如果我有XML

...
<BOOK Author="blabla" Edition="3rd">
NOTE
...
PRICE
...
</BOOK>
...

XML Schema将是:

...
<xs:complexType>
   <xs:sequence>
      <xs:element name="book">
         <xs:complexType>
            <xs:sequence>
               <xs:element name="note">
               ...
               ...
            </xs:sequence>
         </xs:complexType>
   </xs:sequesce>
</xs:complexType>
...

哪些关于作者和版本的信息应该是?请帮忙。

2 个答案:

答案 0 :(得分:0)

我认为这就是你所需要的:

    ...

  <xs:element name ="book" type = "booktype"/>

  <xs:complexType name = "booktype">

    <xs:sequence>
      <xs:element name="note" type="xs:string"/>
      <xs:element name="price" type="xs:decimal"/>
      . . .
    </xs:sequence>

      <xs:attribute name = "author" type = "xs:string"/>
      <xs:attribute name = "edition" type = "xs:string"/>

  </xs:complexType>
    ...

答案 1 :(得分:0)

使用

声明属性
<xs:attribute name="Author" type="xs:string"/>

或类似,这些声明在内部相关元素的complexType,并且必须 sequence之后,即</xs:sequence></xs:complexType>

<xs:element name="BOOK">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="NOTE">...</xs:element>
      <xs:element name="PRICE">...</xs:element>
    </xs:sequence>
    <xs:attribute name="Author" type="xs:string"/>
    <xs:attribute name="Edition" type="xs:string"/>
  </xs:complexType>
</xs:element>

请记住,XML元素和属性名称区分大小写,因此如果元素名为BOOK,则架构也必须说BOOK,而不是book