提问人:jonah_w 提问时间:8/28/2019 更新时间:8/28/2019 访问量:46
模式编译在 LibXML.pm 时失败
Compilation of pattern failed at LibXML.pm
问:
我正在使用 .
在构建这样的模式时:XML::LibXML
XML::LibXML::Pattern->new('//span[@class="entry"]');
它给出以下错误:
Compilation of pattern failed at /Users/chris/perl5/perlbrew/perls/perl-5.31.3/lib/site_perl/5.31.3/darwin-2level/XML/LibXML.pm line 2138.
但是这个工作正常:
XML::LibXML::Pattern->new('//span');
我不确定该部件是否不受支持,或者我只是做错了。[@class="entry"]
XML::LibXML::Pattern
任何信息都是值得赞赏的。提前致谢。
答:
3赞
ikegami
8/28/2019
#1
虽然是有效的 XPath,但这不是有效的模式。
模式是 XPath 语言的一小部分,它仅限于(分离)涉及子轴和后代轴的位置路径,其缩写形式如下所示:
Selector ::= Path ( '|' Path )* Path ::= ('.//' | '//' | '/' )? Step ( '/' Step )* Step ::= '.' | NameTest NameTest ::= QName | '*' | NCName ':' '*'
为了提高可读性,可以在选择器 XPath 表达式中使用空格,即使语法没有明确允许:可以在任何标记之前或之后的模式中自由添加空格,其中
token ::= '.' | '/' | '//' | '|' | NameTest
请注意,不允许使用谓词或属性测试。
(强调我的。
评论