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

时间:2015-05-18 17:24:57

标签: xslt saxon

我试图通过以下列表中的6.XML获取3.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。

2 个答案:

答案 0 :(得分:2)

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

虽然文档没有提到在这个类似于glob的模式中,不仅*被视为含义。*(任何字符序列),但是?被视为含义。? (任何单个字符,或没有)。

我找到了一个解决方法,即取代“?”在%7B0,1%7D的正则表达式中 - 也就是说,{0,1}%-escaped使其在URI中有效。

答案 1 :(得分:0)

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

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