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 中有效。
我正在尝试从下面的列表中 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 中有效。