Excel中支持内联架构的XML?

时间:2014-08-18 08:05:48

标签: xml excel xsd

我需要使用XSD生成一个简单的XML文件(用户列表),以便可以在Excel(2010+)中导入此XML。这个XML提供的字段是动态的,它取决于用户他想要/需要的字段。列表可能很长,我有大约40个字段供用户选择。

Excel基于XML架构构建其表列。如果第一行缺少字段,则会以错误的顺序将这些字段添加到表中。所以需要一个架构!由于XML基于请求,因此XML模式必须内联。

根据我能找到的关于内联架构的每篇文章,我创建了以下内容..但它会崩溃并烧掉每个验证器。 Excel也不会接受它。

<?xml version="1.0" encoding="UTF-8"?>

<users xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="#local">
  <xs:schema id="local" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="users">
      <xs:complexType>
        <xs:sequence>
          <xs:any processContents="skip" namespace="http://www.w3.org/2001/XMLSchema" minOccurs="0" maxOccurs="1"/>
          <xs:element ref="user" minOccurs='1' maxOccurs='unbounded'/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>

    <xs:element name="user">
      <xs:complexType>
        <xs:sequence>
          <xs:element ref="firstname" minOccurs='0' maxOccurs='1'/>
          <xs:element ref="lastname" minOccurs='0' maxOccurs='1'/>
          <xs:element ref="phone" minOccurs='0' maxOccurs='1'/>
        </xs:sequence>
      </xs:complexType>
    </xs:element>

    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
    <xs:element name="phone" type="xs:string"/>

  </xs:schema>

  <user>
    <lastname>Doe</lastname>
    <phone>123456789</phone>
  </user>
  <user>
    <firstname>John</firstname>
    <lastname>Something</lastname>
  </user>
  <user>
    <firstname>Jesus</firstname>
    <lastname>Christ</lastname>
    <phone>987654321</phone>
  </user>
</users>

我到底做错了什么?看起来很简单......

0 个答案:

没有答案