下午好,Saxon 9.8:EXPath File Module功能文件支持哪些模式:列表?
我正在使用Java Saxon 9.8.0.4。我想用其第三个“模式”参数使用EXPath文件模块函数“file:list”。但我怀疑,支持哪种模式。
我看过Saxon documentation和EXPath documentation。但我不知道,Saxon 9.8.0.4支持哪些模式。支持正则表达式会很棒,但我知道对于大多数用户来说它是过度的。我尝试了几个盲目的测试,但只是*和?如EXPath documentation中定义的,wildchars适用于我。
是的,我可以非常容易地在for-each中进行regexp后处理,但要更多地了解list函数可能会有所帮助。
预先感谢您的帮助,斯捷潘
PS:我用例是让所有的文件没有扩展名(“测试”,而不是“的test.txt”)从大而深的目录结构和递归使用XSL-T 3.0处理所有匹配的文件。大多数这样的文件具有相同的文件名,因此我不能做“复制到一个文件夹”预处理萨克森的-s:目录-o:目录一次调用和调用Java(撒克逊)每个文件是可怕的时间高架。因此,我想将所有匹配的文件按顺序读取,并使用for-each(文件是文本文件并使用未解析文本读取它们)处理每个这样的序列项目。不,GAWK不是解决方案,因为我已经在XSL-T中实现了从XML到SQL的所有转换基础架构,因为95%的文件都是XML。
--ADDED代码及以下的解释:我的测试文件
例。
XML文件 “A.XML”:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="a.xsl"?>
<root/>
XSL-T文件 “a.xsl”:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:saxon="http://saxon.sf.net/"
xmlns:expathFile="http://expath.org/ns/file"
exclude-result-prefixes="xs saxon"
version="3.0">
<xsl:output method="text" />
<xsl:template match="/root">
<xsl:variable name="list" select="expathFile:list('C:\temp\temp\test\', false(), '^.*$')"/>
<xsl:for-each select="$list">
<xsl:value-of select="."/>
</xsl:for-each>
</xsl:template>
我的文件夹 “C:\ TEMP \ TEMP \测试\” 载6个测试文件:a.txt,b.txt,c.txt,e,f,g。
但在经过对“http://www.regexplanet.com/advanced/java/index.html”的联机Java RegExp测试程序的测试后,我发现问题完全在我身边,因为Java正则表达式与PCRE(Perl),sed和gawk正则表达式的行为有些不同。所以这是我的错,我需要学习Java正则表达式。
我非常抱歉,但即使经过大量尝试,我也无法使其工作。我的代码是: 当我尝试更改'*'为例如'。*'或'^。* $'它仍然不起作用。 –
我担心wiki系统可能损坏了您的示例代码。请在反引号之间再次输入。 –