当前位置 : 主页 > 网页制作 > xml >

连接xml文件

来源:互联网 收集:自由互联 发布时间:2021-06-13
我有几个xml文件,其名称存储在另一个xml文件中. 我想使用xsl来生成xml文件组合的摘要.我记得有一种方法可以使用msxml扩展(我使用的是msxml). 我知道我可以使用select =“document(filename)”来
我有几个xml文件,其名称存储在另一个xml文件中.

我想使用xsl来生成xml文件组合的摘要.我记得有一种方法可以使用msxml扩展(我使用的是msxml).

我知道我可以使用select =“document(filename)”来获取每个文件的内容,但我不确定如何将所有这些文档合并为一个.

2008年10月21日我应该提到我想对组合的xml进行进一步的处理,所以仅从变换中输出它是不够的,我需要将它存储为变量中的节点集.

以下是您可以做的一个小例子:

file1.xml:

<foo>
<bar>Text from file1</bar>
</foo>

file2.xml:

<foo>
<bar>Text from file2</bar>
</foo>

INDEX.XML:

<index>
<filename>file1.xml</filename>
<filename>file2.xml</filename>

summarize.xsl:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:exsl="http://exslt.org/common"
    extension-element-prefixes="exsl">

  <xsl:variable name="big-doc-rtf">
      <xsl:for-each select="/index/filename">
        <xsl:copy-of select="document(.)"/>
      </xsl:for-each>
  </xsl:variable>

  <xsl:variable name="big-doc" select="exsl:node-set($big-doc-rtf)"/>

  <xsl:template match="/">
    <xsl:element name="summary">
      <xsl:apply-templates select="$big-doc/foo"/>
    </xsl:element>  
  </xsl:template>

  <xsl:template match="foo">
    <xsl:element name="text">
      <xsl:value-of select="bar"/>
    </xsl:element>  
  </xsl:template>

</xsl:stylesheet>

将样式表应用于index.xml可以为您提供:

<?xml version="1.0" encoding="UTF-8"?><summary><text>Text from file1</text><text>Text from file2</text></summary>

诀窍是使用文档函数(几乎所有XSLT 1.0处理器都支持的扩展函数)加载不同的文档,将内容作为变量体的一部分输出,然后将变量转换为节点集以进行进一步处理.

网友评论