为具有属性的元素编写.xsd

时间:2011-11-07 14:02:37

标签: attributes xsd element

我目前正在熟悉xsd和xml只是为了好玩,而且我不确定我做错了什么。我想为一个简单的(好的,不是真的,因为它有属性)写一个xsd表和行和列,并在Excel中使用XML映射来很好地显示数据。行的行和列中的列(如表1中的列)通常会看到。 e.g。

<?xml version='1.0'?>
<table name='Data1'>
<row>
<col name='id'>1</col>
<col name='x'>0</col>
<col name='y'>6</col>
<col name='z'>7</col></row>
<row>
<col name='id'>2</col>
<col name='x'>0</col>
<col name='y'>5</col>
<col name='z'>8</col></row>
<row>
<col name='id'>3</col>
<col name='x'>0</col>
<col name='y'>5</col>
<col name='z'>9</col></row></table>

实际上,它应该类似于:

  • id | x | y | z
  • 1 | 0 | 6 | 7
  • 2 | 0 | 5 | 8
  • 3 | 0 | 5 | 9

编辑架构:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="table">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="row" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="col" minOccurs="0" maxOccurs="unbounded">
                                <xs:complexType>
                                    <xs:simpleContent>
                                    <xs:extension base="xs:string">
                                            <xs:attribute name="name" type="xs:string"/>
                                        </xs:extension>
                                    </xs:simpleContent>
                                </xs:complexType>
                            </xs:element>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:attribute name="name" type="xs:string"/>
        </xs:complexType>
    </xs:element>
</xs:schema> 

我添加了一些额外的成分或遗失了什么吗?我还不清楚这个xsd的事情。 XD

提前感谢任何可以指出我的错误的人。

1 个答案:

答案 0 :(得分:0)

方案未验证xml - 列元素声明未完成。 试试这个:

<xs:element name='table'>
    <xs:complexType>
        <xs:sequence>
            <xs:element name='row'>
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name='col' minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:string">
                                        <xs:attribute name="name" type="xs:string">
                                        </xs:attribute>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name='name' type='xs:string'/>
    </xs:complexType>
</xs:element>