XSD文件生成 - 结构问题

时间:2013-03-25 14:48:41

标签: xml xsd

我是.xml / .xsd世界的新手,我必须说我在这里很努力,即使我想做的任务对我来说听起来很简单!

我目前正在从API中检索数据到Excel中,我想使用第一行包含标题来创建一个xml文件 - >元素的名称以及数据本身的以下行。

使用Excel提供的工具导入.xsd架构,然后能够将数据导出到.xml文件中,我无法正确准备.xsd文件。

问题:我想在我的.xml文件中有多个图层,看起来很难(出于我不理解的原因)。类似的东西:

<element1>
      <subelement1>
      <subelement2>
      <subelement3>
<element2>
<element3>

这是我当前的.xsd文件:

    <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Offers">
        <xs:complexType>
            <xs:sequence>
                <xs:element ref="offer" minOccurs="0" maxOccurs="unbounded"/>
            </xs:sequence>
        </xs:complexType>
        <xs:element name="offer">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="code" type="xs:string"/>
                    <xs:element name="bathroom_count" type="xs:string"/>
                    <xs:element name="bedroom_count" type="xs:string"/>
                    <xs:element name="average_rating" type="xs:string"/>
                    <xs:element name="title" type="xs:string"/>
                    <xs:element name="description" type="xs:string"/>
                    <xs:element name="content_language" type="xs:string"/>
                    <xs:element name="main_photo" maxOccurs="unbounded"/>
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="lalala" type="xs:string"/>
                                <xs:element name="slip" type="xs:string"/>
                            </xs:sequence>
                        </xs:complexType>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
    </xs:element>
</xs:schema>

我已经阅读了大量关于它的帮助,我通常在论坛上提问之前找到了解决方案,但我很困惑。在我看来,这种结构是完美的,但它仍然无法正常工作。 :( 每次我尝试在Excel中导入它时都会给我一个错误,这个布局的错误是

  

描述/ schema / element [1] [@ name ='Offers'] / element [1] [@ name =   'offer']在此上下文中不允许使用元素'xs:element'。

我没有得到它,因为我已经读过,在使用element作为另一个元素的子元素之间需要ComplexType。

1 个答案:

答案 0 :(得分:0)

如果要引用元素,必须将它们放在xs:schema下,如:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Offers">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="offer" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>

</xs:element>

<xs:element name="offer">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="code" type="xs:string"/>
            <xs:element name="bathroom_count" type="xs:string"/>
            <xs:element name="bedroom_count" type="xs:string"/>
            <xs:element name="average_rating" type="xs:string"/>
            <xs:element name="title" type="xs:string"/>
            <xs:element name="description" type="xs:string"/>
            <xs:element name="content_language" type="xs:string"/>
            <xs:element name="main_photo" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="lalala" type="xs:string"/>
                        <xs:element name="slip" type="xs:string"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
</xs:element>

如果要嵌套复杂类型,则需要嵌套它。