如何在Excel中修复“选定的XML模式包含多个根节点”提示

时间:2019-01-25 16:37:30

标签: xml xsd

我正在尝试根据一些供应商文档将XML模式导入MS Excel 2016。当我这样做时,它告诉我有多个根并且要我选一个。我尝试选择第一个项目,但是它似乎无法正确导入,或者不允许我开始制作XML文件。有人可以协助解决此架构中的问题吗?

这是我第一次尝试这种方法,我对XML的经验非常有限。我对可能存在问题的想法有所了解,但是如果不首先有经验的眼光,我就不愿意改变它。

<?xml version="1.0" encoding="UTF-8"?>
<!--W3C Schema for OpenImport -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
    <xs:element name="MainSrcRefType" type="xs:short"/>
    <xs:element name="MainSrcRefID" type="xs:long"/>
    <xs:element name="NameSrcRefID" type="xs:long"/>
    <xs:element name="NameData">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:maxLength value="200"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>
<xs:element name="AddressSrcRefID" type="xs:long"/>
<xs:element name="AddressData">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:maxLength value="200"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>
<xs:element name="CitySrcRefID" type="xs:long"/>
<xs:element name="CityData">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:maxLength value="200"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>
<xs:element name="CountrySrcRefID" type="xs:long"/>
<xs:element name="CountryData">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:maxLength value="50"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>
<xs:element name="BirthDateSrcRefID" type="xs:long"/>
<xs:element name="BirthDateData">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:maxLength value="50"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>
<xs:element name="TINNumberSrcRefID" type="xs:long"/>
<xs:element name="TINNumberData">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:maxLength value="50"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>
<xs:element name="BICSrcRefID" type="xs:long"/>
<xs:element name="BICData">
    <xs:simpleType>
        <xs:restriction base="xs:string">
            <xs:maxLength value="50"/>
        </xs:restriction>
    </xs:simpleType>
</xs:element>
<xs:element name="MatchList">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="MatchListEntry" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="Name" type="xs:string" use="required"/>
    </xs:complexType>
</xs:element>
<xs:element name="MatchListEntry">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="MainSrcRefType"/>
            <xs:element ref="MainSrcRefID"/>
            <xs:element ref="NameSrcRefID"/>
            <xs:element ref="NameData"/>
            <xs:element ref="AddressSrcRefID"/>
            <xs:element ref="AddressData"/>
            <xs:element ref="CitySrcRefID"/>
            <xs:element ref="CityData"/>
            <xs:element ref="CountrySrcRefID"/>
            <xs:element ref="CountryData"/>
            <xs:element ref="BirthDateSrcRefID"/>
            <xs:element ref="BirthDateData"/>
            <xs:element ref="TINNumberSrcRefID"/>
            <xs:element ref="TINNumberData"/>
            <xs:element ref="BICSrcRefID"/>
            <xs:element ref="BICData"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>
</xs:schema>

我希望它可以导入excel并给我一个表,标题等,以便我可以输入所需的数据并导出XML文件。

它显示的数据文件示例为:

示例XML文件结果显示:

<MatchList Name="FileName">
    <MatchListEntry>
       <MainSrcRefID>1234</MainSrcRefID>
       <NameData>John Doe</NameData>
       <-- SOME MORE FIELDS HERE REMOVED FOR BREVITY -->
    </MatchListEntry>
</MatchList>

1 个答案:

答案 0 :(得分:0)

您必须将单个根元素定义为xs:schema元素的子元素。在当前配置中,您有几个“根”元素,例如

<xs:element name="MainSrcRefType" type="xs:short"/>
    <xs:element name="MainSrcRefID" type="xs:long"/>
    <xs:element name="NameSrcRefID" type="xs:long"/>
    <xs:element name="NameData">
    <xs:simpleType>
    ... <!-- 4 root elements till here -->
    ...
  </xs:element>
</xs:schema>

是什么导致错误。但是你只想要一个。要解决此问题,请用单个根元素(如

)包围其他XSD
<?xml version="1.0" encoding="UTF-8"?>
<!--W3C Schema for OpenImport -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="rootElement">   <!-- root element  -->
    ... <!-- Here come the four "root" nodes from above -->
    <xs:element name="MainSrcRefID" type="xs:long"/>
    <xs:element name="NameSrcRefID" type="xs:long"/>
    <xs:element name="NameData">
    <xs:simpleType>
    ... <!-- Here comes the rest of the whole XML file -->
  </xs:element>
</xs:schema>

这当然必须与您要验证的XML文件同步。因此,请检查您的XML文件是否具有一个根元素-如果是,请使用该根元素(其名称代替占位符“ rootElement”)。

此根节点表示XML-1.0文件的单个根节点。
我对Excel没有太多经验,但是现在您应该可以无缝导入文件了。