我正在尝试根据一些供应商文档将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>
答案 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没有太多经验,但是现在您应该可以无缝导入文件了。