【问题标题】:XSD File generation - Structure issueXSD 文件生成 - 结构问题
【发布时间】:2013-03-25 14:48:40
【问题描述】:

我是 .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'。

我不明白,因为我读到需要在两者之间使用 ComplexType 才能将元素用作另一个元素的子元素。

【问题讨论】:

    标签: xml xsd


    【解决方案1】:

    如果要引用元素,必须将它们放在 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>
    

    如果你想嵌套一个复杂的类型,你需要嵌套它。

    【讨论】:

    • 非常感谢您的回答!我希望它看起来像:` ... en...... `正如您在新层中看到的&lt;lalala&gt;&lt;slip&gt;
    猜你喜欢
    • 2013-07-30
    • 2012-10-28
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 2010-09-28
    • 2010-10-29
    • 1970-01-01
    相关资源
    最近更新 更多