1

我有以下问题:我有几个输入 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!

4

1 回答 1

0

答案基本上与您访问其他人的方式相同。如果你说

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

那么这将为您提供一个变量,其值为一组 5 个节点(File来自所讨论的五个Part元素中的每个元素的属性节点)。现在,当您将节点集传递给document函数时,您将返回另一个节点集,该节点集由文档中的根节点组成,其 URI 由原始集中每个节点的字符串值给出。因此

document($XCDDocs)/Document

是一组五个节点,Document五个文件中的每一个的元素,以及

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

将为所有五个文件中的文档元素的所有第一级子元素应用模板,等等。

于 2013-01-23T16:14:29.320 回答