0
我有一個非常大的xml文件,我想在ms-access中進行恢復。這裏是結構(當然最小值):將XML文件重新創建爲MS-ACCESS的XSLT
<?xml version="1.0" encoding="UTF-8"?>
<PortfoliosNA>
<TourOp id="xxx-245-AF">
<Company>ITS</Company>
<joined="11-01-2004" />
</TourOp>
<TourOp id="xxx-342-EU">
<Company>TUI</Company>
<joined="12-03-2004" />
</TourOp>
<transfer Local="1001 Nuits Travel" HQ="Cairo" RefTO="xxx-245-AF">
\t <Bus>112</Bus>
\t <AgentsLoc>17</AgentsLoc>
\t <TOleader>4</TOleader>
\t <Circuits>Charm-Hurghada</Circuits>
</transfer>
<transfer Local="Alpha Tours" HQ="Bratisla." RefTO="xxx-342-EU">
\t <Bus>42</Bus>
\t <AgentsLoc>4</AgentsLoc>
\t <TOleader>2</TOleader>
\t <Circuits>xxx</Circuits>
</transfer>
</PortfoliosNA>
,我想這個XML轉換成這樣:
<PortfoliosNA>
<transfer>
<Local>1001 Nuits Travel</Local>
<HQ>Cairo</HQ>
<RefTO>ITS</RefTO>
<Bus>112</Bus>
<AgentsLoc>17</AgentsLoc>
<TOleader>4</TOleader>
<Circuits>Charm-Hurghada</Circuits>
</transfer>
<transfer>
<Local>Alpha Tours</Local>
<HQ>Bratisla.</HQ>
<RefTO>TUI</RefTO>
<Bus>42</Bus>
<AgentsLoc>4</AgentsLoc>
<TOleader>2</TOleader>
<Circuits>xxx</Circuits>
</transfer>
</PortfoliosNA>
正如你可以看到RefTO節點將採取公司名稱值而不是Id('ITS'而不是'xxx-245-AF')例如 因此,最後我將在ms-access中獲得一個名爲'transfer'的獨特表格,其中包含7列(Local-HQ- RefTO-Bus-Agents-TOLeader-Circuits)
我可以通過XSLT轉換文件獲得一些可讀表,但我仍然遠離工作表,並且絕對不能將公司名稱作爲'RefTO'的值而不是其ID。 這裏是我的XSLT文件:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="transfer/@*">
<xsl:element name="{name()}">
<xsl:value-of select="."/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
很感謝您的幫助來擺脫這種噩夢和產生我的最後報告。謝謝。
OMG就像一個魅力!非常感謝你今天挽救我的生命,並感謝你的鏈接。我會跳到那裏去更好地理解機制並面對下一個類似的需求。 Xml並不是我的'快樂',但我必須。 – karmel