Ruby Nokogiri中的CSS/Xpath同级选择器

Ruby Nokogiri中的CSS/Xpath同级选择器,ruby,xml,xpath,css-selectors,nokogiri,Ruby,Xml,Xpath,Css Selectors,Nokogiri,我有并且只需要为ref type的contrib带有子xref节点的contrib标记获取名字和姓氏 我只希望在*的条件下使用同级节点,即输出: => Andricioaei => Ioan 目前,我没有参考ref-type,而是在xref标记中选择星号(两者都是合适的)。问题实际上是XPath获取姓氏和给定名称的问题,即XPath对于以下行不正确: puts surname = corrdetails.xpath( "//surname" ).text puts givennam

我有并且只需要为
ref type
contrib
带有子
xref
节点的
contrib
标记获取名字和姓氏

我只希望在
*
的条件下使用同级节点,即输出:

=> Andricioaei
=> Ioan

目前,我没有参考
ref-type
,而是在
xref
标记中选择星号(两者都是合适的)。

问题实际上是XPath获取姓氏和给定名称的问题,即XPath对于以下行不正确:

puts surname = corrdetails.xpath( "//surname" ).text
puts givennames = corrdetails.xpath("//given-names").text
/
启动XPath意味着在文档中的任何位置查找节点。您只需要查看
corrdails
节点,这意味着XPath需要以点开头,例如,
/

将这两行更改为:

puts surname = corrdetails.xpath( ".//surname" ).text
puts givennames = corrdetails.xpath(".//given-names").text

我对Nokogiri一无所知,但相关的XPath可能是
//name[以下兄弟姐妹::xref[@ref type=“corresp”]]/concat(给定名称,”,姓氏)
。这是XPath 1.0吗?nokogiri不能使用2.0,我也不知道那些选择器在1.0中,如果我错了,那就太好了……我不认为XPath 1.0不支持该表达式中的任何内容<代码>以下同级::
concat
都在规范中。我得到一个错误,即存在多余的
现在,我不知道如何-
放置corrdetails.xpath(//name[以下同级::xref[@ref type=“corresp”]])
可能需要转义
在查询中。顺便说一句,您的XML无效。您有
,但没有
。这可能是复制粘贴错误。太棒了!非常感谢
puts surname = corrdetails.xpath( "//surname" ).text
puts givennames = corrdetails.xpath("//given-names").text
puts surname = corrdetails.xpath( ".//surname" ).text
puts givennames = corrdetails.xpath(".//given-names").text