2013-03-25 96 views
0

我是.xml/.xsd世界的新手,我必须说我在这里很辛苦,即使我想要做的任务对我来说听起来很简单!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中它给了我一个错误,此布局的错误

描述/模式/元素[1] [@名称=“酒店”] /元素[1] [@name = “报价”]元素“XS:元素”是不是在这方面允许

我不明白这一点,因为我读过的复杂类型需要在这两者之间使用元素作为。孩子的另一个元素

回答

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> 

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

+0

非常感谢您的回答! 我想它看起来像: ' \t \t \t ... \t \t \t \t 连接 \t \t \t \t \t ... \t \t \t ...... \t \t \t ' 正如你可以用''和''在一个新层看到的。 – fassn 2013-03-25 15:19:16

+0

看到我编辑的答案 – 2013-03-25 15:44:13