2015-10-16 30 views
1

我想將多個XML文件導入到Access中並使用轉換。我需要在Program表中顯示外鍵OrderID。 這裏是我的XML:XML導入到Access需要一個外鍵

<Requests> 
<Request> 
<orderID>12345</orderID> 
<FA><![CDATA[Jon Smith]]></FA> 
<FA_state>MN</FA_state> 
<ship_to>Online Delivery</ship_to> 
<prospect><![CDATA[Elvis]]></prospect> 
<address><![CDATA[2999 Street]]></address> 
<city><![CDATA[Minneapolis]]></city> 
<state>MN</state> 
<zip>55413</zip> 
<ship_dt>10/16/2015 11:45:11</ship_dt> 
<delivery_method>Online Delivery</delivery_method> 
<programs> 
    <program> 
    <program_name><![CDATA[Hedge Fund]></program_name> 
    <copy_number>56211B87IUQPTCE</copy_number> 
    </program> 
</programs> 
<file_create_dt>10/16/2015</file_create_dt> 
<request_dt>10/15/2015 09:19:50</request_dt> 
<employee_id>1102132</employee_id> 
</Request> 
</Requests> 

,我使用的變換:

<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="program"> 
    <program> 
     <orderID><xsl:value-of select="../orderID"/></orderID> 
     <xsl:apply-templates select="@*|node()"/> 
    </program> 
</xsl:template> 

變換創建的計劃表的外鍵字段,但失敗插入任何值。我完全困惑在這一點上。 謝謝!

回答

1

模板的program節點匹配,所以XPath表達式../OrderID將選擇OrderID元素是當前program節點的父母的孩子。但OrderID是「祖父母」的孩子。

你應該試試這個,回去了一個額外的水平

<xsl:value-of select="../../orderID"/> 
+0

這完美地工作!謝謝! – Chris