我有几个xml文件,其名称存储在另一个xml文件中. 我想使用xsl来生成xml文件组合的摘要.我记得有一种方法可以使用msxml扩展(我使用的是msxml). 我知道我可以使用select =“document(filename)”来
我想使用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处理器都支持的扩展函数)加载不同的文档,将内容作为变量体的一部分输出,然后将变量转换为节点集以进行进一步处理.