因此,我试图找出如何从MS Access导出,以便生成的XML具有相同的元素名称和节点,而不是来自另一个源...我还没有成功..
因此,我正在考虑从MS Access导出到XML,然后使用XSLT转换文件中的数据,以便可以读取它 .
如果有人能帮助我,因为我已经尝试并且未能整天编码XSLT以获得我需要的东西?
基本上,我需要创建一个XSLT,它将所有XML导出转换为具有相同的Element名称,以及我的'Template XML'中的节点
我的模板XML如下......
<DatabaseData>
<Customers>
<Idx>0</Idx>
<FirstName/>
<LastName>Undefined</LastName>
<IconIdx>0</IconIdx>
<PhoneNumber/>
<Email/>
<Street/>
<City/>
<State/>
<ZipCode/>
<Available>1</Available>
<SPIndex>0</SPIndex>
</Customers>
</DatabaseData>
//编辑//道歉..
我试图创建自己的XSLT,但我觉得它缺乏..
<xsl:stylesheet version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:element name="DatabaseData">
<xsl:element name="Customers">
<Idx><xsl:value-of select="Idx" /></Idx>
<FirstName><xsl:value-of select="FirstName" /></FirstName>
<LastName><xsl:value-of select="LastName" /></LastName>
<IconIdx><xsl:value-of select="IconIdx" /></IconIdx>
<PhoneNumber><xsl:value-of select="PhoneNumber" /></PhoneNumber>
<Email><xsl:value-of select="Email" /></Email>
<Street><xsl:value-of select="Street" /></Street>
<City><xsl:value-of select="City" /></City>
<State><xsl:value-of select="State" /></State>
<ZipCode><xsl:value-of select="ZipCode" /></ZipCode>
<Available><xsl:value-of select="Available" /></Available>
<SPIndex><xsl:value-of select="SPIndex" /></SPIndex>
</Customers>
</DatabaseData>
</xsl:template>
</xsl:stylesheet>
Access to XML的输出信息如下:
<dataroot xmlns:od="urn:schemas-microsoft-com:officedata" generated="2014-07- 29T14:28:34">
<Customers>
<Idx>1</Idx>
<FirstName>David</FirstName>
<LastName>James</LastName>
<IconIdx>0</IconIdx>
<PhoneNumber>00000 000000</PhoneNumber>
<Email>david@email.com</Email>
<Street/>
<City>London</City>
<State>London</State>
<ZipCode>AB3 CD4</ZipCode>
<Available>0</Available>
<SPIndex>0</SPIndex>
</Customers>
</dataroot>
所以我需要......
一个 . 将'dataroot'更改为'DatabaseData'b . 删除'Generated'节点,同时删除Access导出后放置的'xlmns:od' .
任何帮助将不胜感激!
1 回答
我相信你的样式表可以压缩到:
我没有在你的输入中看到这一部分 .
编辑:
要删除(无害的)名称空间声明,您需要执行以下操作:
或者,如果您更喜欢更通用的解决方案:
IOW,您不能使用
copy
或copy-of
,否则处理器将保留名称空间声明,以防需要进一步下游 .