XPath在R中的XML文档上失败
我很高兴能找到一些关于使用R进行XML操作的帮助 我正在尝试对XML/TEI文件执行XPath。其结构如下:XPath在R中的XML文档上失败,r,xpath,xml-parsing,R,Xpath,Xml Parsing,我很高兴能找到一些关于使用R进行XML操作的帮助 我正在尝试对XML/TEI文件执行XPath。其结构如下: <?xml version="1.0" encoding="UTF-8"?> <TEI xmlns="http://www.tei-c.org/ns/1.0"> <text> <body> <div> <p> <seg>
<?xml version="1.0" encoding="UTF-8"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
<text>
<body>
<div>
<p>
<seg>
<name ref="Actr1235">Jen B.</name>frate M. <name ref="Actr1234">Léard B.</name> rhoncus orci quis luctus ultrices <note place="margin-left">1713 & 1714</note>, a été
vehicula cursus nunc, at sagittis lorem aliquet sed <name ref="Actr1236"> Jaes L.</name>
aeman graeca <name type="place">Digo</name> iaculis volutpat risu <name ref="Cole14">la
Charias</name>. M. <name ref="Actr1236">Laure</name> bibendum augue erat, fermentum semper. M. <name ref="Actr1235">B.</name> bibendum augue erat, fermentum semper
</seg>
</p>
</div>
</body>
</text>
</TEI>
它返回以下错误:
XPath错误:未定义的命名空间前缀xmlXPathCompOpEval:参数
错误XPath错误:无效的表达式Erreur dans
xpathApply.XMLInternalDocument(doc、path、fun、…、名称空间=
名称空间:计算xpath表达式时出错
数据(//tei:name/@ref[以(,'Actr')开头])
在这种情况下,如何定义命名空间?XML包不能很好地处理默认命名空间。在使用xpath样式表达式之前,需要明确指定命名空间的名称。类似于
xpathSApply(data1715,
"//tei:name/@ref[starts-with(.,'Actr')]",
unname,
namespaces=c(tei=getDefaultNamespace(data1715)[[1]]$uri))
注意:我还删除了
data()
并更改了xmlValue
。我不确定您试图用data()做什么
,但这里我们返回的是属性,而xmlValue
似乎不喜欢使用属性。我不熟悉R,但它似乎无法识别与tei:
前缀关联的名称空间。如果有办法在R中声明名称空间,请尝试;否则,请为该元素使用通配符/*:name/@ref[…]
。请仔细阅读XPath和XQuery(这是XPath的超集)之间的区别,并使用正确的标记。xpathsaply
不支持XQuery(这不是问题,您在问题中只使用了一个简单的XPath表达式).Perfect。不过结尾缺少一个括号。它返回以“Actr”开头的所有属性值的列表。非常感谢。
xpathSApply(data1715,
"//tei:name/@ref[starts-with(.,'Actr')]",
unname,
namespaces=c(tei=getDefaultNamespace(data1715)[[1]]$uri))