2013-01-23 122 views
1

我有以下問題:我有幾個輸入XML文件,其中一個包含其他鏈接。 這一個看起來是這樣的:XSLT轉換 - 多個輸入XML文件

<Envelope> 
<Part File='file:SEQ014/DET3262874.9.0.xml' LinkType='REL' DocType='XCD' SubType='Call' Format='XML'/> 
<Part File='file:SEQ014/DET3262874.9.1.xml' LinkType='REL' DocType='XCD' SubType='Call' Format='XML'/> 
<Part File='file:SEQ014/DET3262874.9.2.xml' LinkType='REL' DocType='XCD' SubType='Call' Format='XML'/> 
<Part File='file:SEQ014/DET3262874.9.3.xml' LinkType='REL' DocType='XCD' SubType='Call' Format='XML'/> 
<Part File='file:SEQ014/DET3262874.9.4.xml' LinkType='REL' DocType='XCD' SubType='Call' Format='XML'/> 
<Part File='file:SEQ014/DET3262874.9.5.xml' LinkType='REL' DocType='XCD' SubType='Charge' Format='XML'/> 
<Part File='file:SEQ014/INV3262874.9.xml' LinkType='REL' DocType='INV' Format='XML'/> 
<Part File='file:SEQ014/INVINFO3262874.9.xml' LinkType='REL' DocType='IIN' Format='XML'/> 
<Part File='file:SEQ014/SUM3262874.9.xml' LinkType='REL' DocType='SUM' Format='XML'/> 
<Part File='file:SEQ014/BAL3262874.9.xml' LinkType='REL' DocType='BAL' Format='XML'/> 
<Part File='file:SEQ014/ADDR3262874.9.xml' LinkType='REL' DocType='ADD' Format='XML'/> 
</Envelope> 

現在,我訪問文件的底部是這樣的:

<xsl:param name="BillingDocument2" select="/Bill/Part[@DocType='ADD']/@File"/> 
<xsl:param name="BillingDocument3" select="/Bill/Part[@DocType='INV']/@File"/> 
etc... 

在那之後,我引用他們是這樣的:

<xsl:variable name="var13_Document" select="document($BillingDocument2)/Document"/> 
etc... 

不過,我不知道如何從第5個XML文件使用數據?所有這些文件具有相同的結構,基本上,它是一個大文件,分爲5個較小的文件... 我需要從這5個文件中獲得所有數據(它們的編號因情況而異)在一個地方,所以我可以用相同的方式處理它... 噢,我只能使用XSLT1!

回答

0

答案基本上是你所訪問的人以同樣的方式。如果你說

<xsl:param name="XCDDocs" select="/Bill/Part[@DocType='XCD']/@File"/> 

那麼這會給你一個變量,其值是一組5個節點(每個有問題的五個Part元素的File屬性節點)的。現在,當您傳遞一個設置爲document函數的節點時,您將獲得另一個節點集,其中包含文檔中的根節點,其URI由原始集中每個節點的字符串值給定。因此

document($XCDDocs)/Document 

是一組五個節點,每個五個文件的Document元素,

<xsl:apply-templates select="document($XCDDocs)/Document/*" /> 

將應用模板的文檔元素的,所有的一切的第一級子元素五個文件等

+0

感謝您的回答,但是,這是我試過的第一件事,並沒有工作 - 因爲它沒有得到任何的DET文件... 這是怎麼了我稍後訪問它: 'code' 'code' 我想我需要一些for-each循環嗎? – cameron

+0

@cameron這絕對符合DET文件中XML的格式 - 它們有一個名爲「Document」的根元素,沒有名稱空間? –

+0

正好...我明天再試一次,並確認... – cameron