Mar*_*ffx 5 xml excel xsd denormalized
我们正在尝试将带有"非规范化数据"的excel表导出到xml.表头如下:
| AssetManager Code | AssetManager Date | Portfolio Code | Portfolio Name | MarketValue | NetCashFlow | Field | Field Code | Field Name |
Run Code Online (Sandbox Code Playgroud)
AssetManager代码和AssetManager日期始终相同,其余列包含可变数据.
以下是我们想要的xml输出示例:
<AssetManager Code="PFM" Date="20130117">
<Portfolios>
<Portfolio Code="CC PSP" Name="Consilium Capital">
<MarketValue>5548056.51</MarketValue>
<NetCashFlow>0</NetCashFlow>
<UserFields>
<Field Code="AM UCGT" Name="AM daily Unrealised CG">4375</Field>
</UserFields>
</Portfolio>
<Portfolio Code="MM (FC)" Name="Money Market UT (FC)">
<MarketValue>28975149.6500735</MarketValue>
<NetCashFlow>0</NetCashFlow>
<UserFields>
<Field Code="UCGT" Name="AM daily Unrealised CG">0</Field>
</UserFields>
</Portfolio>
</Portfolios>
</AssetManager>
Run Code Online (Sandbox Code Playgroud)
我们的xsd文件包含映射:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="AssetManager">
<xs:complexType>
<xs:sequence>
<xs:element ref="Portfolios" />
</xs:sequence>
<xs:attribute name="Code" type="xs:string"/>
<xs:attribute name="Date" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:complexType name="FieldType">
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="Code" type="xs:string"/>
<xs:attribute name="Name" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="Portfolios">
<xs:complexType>
<xs:sequence>
<xs:element name="Portfolio">
<xs:complexType>
<xs:sequence>
<xs:element name="MarketValue" type="xs:decimal"/>
<xs:element name="NetCashFlow" type="xs:decimal"/>
<xs:element name="UserFields">
<xs:complexType>
<xs:sequence>
<xs:element name="Field" type="FieldType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Code" type="xs:string"/>
<xs:attribute name="Name" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
至少我们想知道为什么excel认为数据非规范化了?
任何帮助都感激不尽.
Pet*_*dea 10
首先,您发布的XSD存在问题.Portfolio应该将maxOccurs设置为大于1的值 - 否则您不匹配示例XML,并且在Excel中验证地图时不会出现"非规范化数据"错误.
本文应解释您使用Excel地图时遇到的常见错误 - 包括您的地图.
我猜你做的是拖放根 - 这对重复元素不起作用.
你可以解决我在下面所做的事情; 它可能不适用于你的具体例子,但它应该给你一个想法.
修改了XSD以考虑重复粒子:
<?xml version="1.0" encoding="UTF-8"?>
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="AssetManager">
<xs:complexType>
<xs:sequence>
<xs:element ref="Portfolios"/>
</xs:sequence>
<xs:attribute name="Code" type="xs:string"/>
<xs:attribute name="Date" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:complexType name="FieldType">
<xs:simpleContent>
<xs:extension base="xs:decimal">
<xs:attribute name="Code" type="xs:string"/>
<xs:attribute name="Name" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:element name="Portfolios">
<xs:complexType>
<xs:sequence>
<xs:element name="Portfolio" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="MarketValue" type="xs:decimal"/>
<xs:element name="NetCashFlow" type="xs:decimal"/>
<xs:element name="UserFields">
<xs:complexType>
<xs:sequence>
<xs:element name="Field" type="FieldType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Code" type="xs:string"/>
<xs:attribute name="Name" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Run Code Online (Sandbox Code Playgroud)
仅在第一张纸上拖动代码和日期; 如果你愿意,可以将其重命名为其他内容.

将电子档案夹拖到另一张表

填写一些数据并导出; 这就是我得到的:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssetManager Code="a" Date="b">
<Portfolios>
<Portfolio Code="aa" Name="bb">
<MarketValue>10</MarketValue>
<NetCashFlow>100</NetCashFlow>
<UserFields>
<Field/>
</UserFields>
</Portfolio>
<Portfolio Code="aa" Name="bb">
<MarketValue>10</MarketValue>
<NetCashFlow>100</NetCashFlow>
<UserFields>
<Field/>
</UserFields>
</Portfolio>
</Portfolios>
</AssetManager>
Run Code Online (Sandbox Code Playgroud)
它看起来非常接近.如果没有解决方案本身,那么它应该可以帮助您前进,然后进行调查.