xml – XSLT:如何从某个目录获取文件名?

XSLT中是否有一个功能可以占用一个目录路径并返回其中的所有文件?

我有一个xml文件现在读这样

<filelist>
    <file>fileA.xml</file>
    <file>fileB.xml</file>
</filelist>

现在,有一个名为dir的目录,具有fileX.xml,fileY.xml文件和一堆其他的xml文件.我想将这些文件添加到原始的xml文件,以便我可以得到:

<filelist>
    <file>fileA.xml</file>
    <file>fileB.xml</file>
    <file>fileX.xml</file>
    <file>fileY.xml</file>
    .... <!-- other files -->
</filelist>

有没有XSLT的方式来做到这一点?一个可以在一个目录根中的东西,并且能够遍历其中的所有文件?然后我可以打电话给:

<xsl:element name = file >
     <xsl:copy> <!--whatever file name--> <xsl:copy>
</xsl:element>0

[编辑-溶液]

所有的答案都非常有帮助.我最终找到了一个外部解决方案(使用萨克森).我认为这可能有助于其他人将我的解决方案发布在这里,虽然它对我自己的情况非常具体.

我使用Ant构建一个java web应用程序,需要在部署之前翻译一些xml文件.因此,我正在使用xslt任务通过在类路径中添加“saxon9.jar”来完成这项工作.而在我的xsl文件中,我只是做了这样的事情:

<xsl:for-each select="collection('../dir/?select=*.xml')" >
     <xsl:element name='file'>
        <xsl:value-of select="tokenize(document-uri(.),'/')[last()]"/>
     </xsl:element>
</xsl:for-each>
XSLT没有任何内置的任务. XSLT是一种转换语言 – 对于动态输出,您通常需要一个包含所有内容(只是以不同的形式)的转换源 – 您无法从任何内容创建XML.

解决问题的三种方法是:

>以编程语言构建XML,完全不用XSLT.这是获得所需结果的最简单方法.
>构建一个接受参数的XSL样式表,将一个(预构建的)分隔的文件列表放入该参数中,让XSLT处理该字符串并从中生成XML.这也涉及外部处理,基本上这是选项1.加上你必须编写一个XSL样式表来进行字符串处理(XSL没有被设计)
>使用扩展功能,并从XSL内进行目录处理.一个例子如何开始可以在my answer to this question中找到.由于扩展功能是特定于平台的,这不是很便携.

归结为:

>您需要外部编程语言的帮助
>您不需要XSLT完成任务,因为XML输出是您需要的,不需要转换.

Ergo:不要使用XSL.

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

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇