XSLT collection() 函数正则表达式无法识别“?”

XSLT collection() function regex not recognizing '?'

我正在尝试从下面的列表中 3.XML 到 6.XML:

3.XML

4.XML

4_1.XML

5.XML

5_1.XML

6.XML

31.XML

collection('file:///.../?select=[3-6](_[0-9]+)?.XML 只抓取 4_1.XML 和 5_1.XML,因此不识别 '?'。对于如何解决这个问题,有任何的建议吗?我正在使用 Saxon-PE 9.5.1.3。

集合 URI 中参数 select 的值不是正则表达式,它是类似 glob 的模式(就像您在 shell 中使用的一样)。有关详细信息,请参阅 documentation

在你的情况下,我认为你能做的最好的就是?select=*.XML恐怕。

谢谢,@Florent,您的诊断是正确的。

尽管文档没有提到在这种类似 glob 的模式中,不仅 * 被视为含义 .*(任何字符序列),而且 ?被视为意义。? (任何单个字符,或 none)。

我找到了一个解决方法,就是将“?”替换掉在正则表达式中 %7B0,1%7D - 也就是说,{0,1} %-转义以使其在 URI 中有效。