A有以下xmls:
data_0.xml data_1.xml data_3.xml 等等...
在xslt文件中我想迭代所有文件,所以我尝试了 - 每个函数。
<xsl:for-each select="document('data.xml')/*">
如何迭代所有这些?不知何故添加面具?这当然行不通:
<xsl:for-each select="document('data_*.xml')/*">
答案 0 :(得分:0)
以下是xslt 1.0中的解决方案:
我的文件系统中有四个文件:
<强> Doc1.xml:强>
<p>Doc1</p>
<强> Doc2.xml:强>
<p>Doc2</p>
<强> Doc3.xml:强>
<p>Doc3</p>
<强> Doc4.xml:强>
<p>Doc4</p>
和 xslt 获取输出结果为:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<Root>
<xsl:call-template name="getDocuments"/>
</Root>
</xsl:template>
<xsl:template name="getDocuments">
<xsl:param name="fileStartWith" select="'Doc'"/>
<xsl:param name="endCounter">4</xsl:param>
<xsl:param name="startCounter">1</xsl:param>
<xsl:choose>
<xsl:when test="$endCounter > 0">
<xsl:variable name="fileName"><xsl:value-of select="concat($fileStartWith,$startCounter,'.xml')"/></xsl:variable>
<xsl:for-each select="document($fileName)/*">
<xsl:copy-of select="."/><xsl:text> </xsl:text>
</xsl:for-each>
<xsl:call-template name="getDocuments">
<xsl:with-param name="startCounter" select="$startCounter + 1"/>
<xsl:with-param name="fileStartWith" select="$fileStartWith"/>
<xsl:with-param name="endCounter" select="$endCounter - 1"/>
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
生成的输出是:
<Root>
<p>Doc1</p>
<p>Doc2</p>
<p>Doc3</p>
<p>Doc4</p>
</Root>
请确保xslt和xml位于同一路径上,否则您需要更改文档功能的内容。