我正在尝试设置一个用于Excel XML Mapping的Schema文件。我想要完成的是获取电子表格中的每一行,并让它输出如下所示的XML:
Excel行:
XML_Name | Initiative | HitPoints
ad_wasp 5 42
hob_goblin 7 22
所需的XML输出:
<entities>
<ad_wasp>
<initiative>5</initiative>
<hitpoints>42</hitpoints>
</ad_wasp>
<hob_gob>
<initiative>7</initiative>
<hitpoints>22</hitpoints>
</hob_gob>
</entities>
换句话说 - 我想在Excel工作表中的第一行作为主要元素标记,然后在其下面,将以下行作为子元素。我希望它以这种格式作为我正在使用的程序(Fantasy Grounds 2)接受XML格式的模块化插件,并且需要这样的唯一命名元素,包含子元素。
请记住 - 我对XML完全不熟悉。也许我不能这样做。我在过去3个小时内能够获得的是......
我已经创建了一个模式文件,如下所示,使用XMLSpy - 但是,我遇到的问题是下面的模式将所有内容都放在这样的标记中:
<xml_tag>
<Name>aasimar</Name>
<XP>Aasimar</XP>
<CR>Aasimar</CR>
<Init>Aasimar</Init>
</xml_tag>
有没有办法做我想要的?如果我尝试将“type =”xs:string“”声明放入“XML_Tag”元素中,则会出现错误('type'属性和匿名类型定义对于元素声明'xml_tag'是互斥的。)但是 - 我不知道如何使元素成为“动态变量”(可能使用错误的术语),而不是相同的静态标记。
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Entities">
<xs:complexType>
<xs:sequence>
<xs:element name="xml_tag" form="unqualified" nillable="true" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence minOccurs="0">
<xs:element name="Name" type="xs:string" form="unqualified" nillable="true" minOccurs="0"/>
<xs:element name="XP" type="xs:integer" form="unqualified" nillable="true" minOccurs="0"/>
<xs:element name="CR" type="xs:integer" form="unqualified" nillable="true" minOccurs="0"/>
<xs:element name="Init" type="xs:integer" form="unqualified" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>