微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

连接xml文件

我有几个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处理器都支持的扩展函数)加载不同的文档,将内容作为变量体的一部分输出,然后将变量转换为节点集以进行进一步处理.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。