下午好,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系統可能損壞了您的示例代碼。請在反引號之間再次輸入。 –