有谁知道在XML :: LibMXL中实现了哪个版本的XPath规范?
或者更重要的是,在哪里可以找到我可以在LibXML中使用的XPath函数的描述?
例如,我试过像
这样的东西$dcDOM->findvalue('//dc:identifier[contains(@xsi:type,"URI")]');
似乎工作正常,但
$dcDOM->findvalue('//dc:identifier[matches(@xsi:type,"URI")]');
没有。
从那个开始,我必须假设它最多支持XPath 1.0或1.0 / 2.0的某个子集。
是否有一个整洁的页面列出并描述了所有内容?
答案 0 :(得分:9)
正如您从探测中推测的那样,XML :: LibXML支持XPath 1.0(而不是2.0)。
一般来说,除了通过此类探测器之外,XPath本身无法确定其他版本。另一方面,XSLT提供system-property('xsl:version')
来识别版本信息。
在libxml2上使用源遗产路径:XML :: LibXML is based,其中implements XPath 1.0,如Libxml2主页上所述:
Libxml2实现了许多与标记相关的现有标准 语言:
XML Path Language (XPath) 1.0: http://www.w3.org/TR/xpath
您可能会问Why doesn't libxml2 support XPath 2.0?或阅读old post from maintainer Daniel Veillard,其中指出XPath 2.0规范是#34;太大而且过于干扰,"但底线仍然是: XML :: LibXML支持XPath 1.0,而不是2.0。
答案 1 :(得分:2)
XML :: LibXML是libxml的接口,因此您需要找出已安装的版本。如何操作取决于您的操作系统,但您可以查看xsltproc
或xmllint
的版本,例如:
$ xsltproc --version
Using libxml 20900, libxslt 10128 and libexslt 817
xsltproc was compiled against libxml 20900, libxslt 10128 and libexslt 817
libxslt 10128 was compiled against libxml 20900
libexslt 817 was compiled against libxml 20900
所以我有libxml v2.2.9。
根据所有智慧的来源,维基百科,libxml2只实现了XPath 1.0。
答案 2 :(得分:1)
好的,这不是100%的答案,但根据https://stackoverflow.com/a/10655581/2740187(2012年),libxml仅支持XPath 1.0,支持的字符串函数如下所述:http://www.w3.org/TR/xpath/#section-String-Functions。