xsl を使用して、指定したフォルダーにある XML ファイルを一覧表示する 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>
との代わりに、次のようになり</fileItem>
ます。
<fileItem>path-to-xml\file.xml<fileItem>
どうすれば入手でき<fileItem>path-to-xml\file.xml</fileItem>
ますか?
「.」の代わりに user:ShowFolderFileList() を呼び出すときに、XML から「FolderPath-to-List」を取得するにはどうすればよいですか。これまでのところ、それを実行します。