我正在尝试生成一个 XML 文件,其中列出了使用 xsl 指定文件夹中的 XML 文件:
XML 文件:
<xml>
<folder>FolderPath-to-List</folder>
</xml>
预期结果:
<mergeData newRoot="newRoot">
<fileList>
<fileItem>path-to-file/file1.xml</fileItem>
<fileItem>path-to-file/file2.xml</fileItem>
<fileItem>path-to-file/file3.xml</fileItem>
<fileItem>path-to-file/file4.xml</fileItem>
</fileList>
</mergeData>
到目前为止,我可以使用 XSL 和嵌入式脚本/JScipt 函数在当前文件夹中收集文件列表,如下所示:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="http://tempuri.org/msxsl"
>
<msxsl:script language="JScript" implements-prefix="user">
<![CDATA[
var fso = new ActiveXObject("Scripting.FileSystemObject");
function ShowFolderFileList(folderspec)
{
var f, f1, fc, s;
f = fso.GetFolder(folderspec);
fc = new Enumerator(f.files);
s = '<fileItem>';
for (; !fc.atEnd(); fc.moveNext())
{
s += fc.item();
s += '<fileItem>\n<fileItem>';
}
return(s);
}
]]>
</msxsl:script>
<xsl:template match="/">
<mergeData newRoot="Activity">
<fileList>
<xsl:value-of select="user:ShowFolderFileList('.')"/>
</fileList>
</mergeData>
</xsl:template>
</xsl:stylesheet>
但结果是代替得到<fileItem>
and </fileItem>
,我有:
<fileItem>path-to-xml\file.xml<fileItem>
我怎样才能得到<fileItem>path-to-xml\file.xml</fileItem>
?
如何在调用 user:ShowFolderFileList() 代替“。”时从我的 XML 中获取“FolderPath-to-List”。到目前为止让它运行。