LINUX.ORG.RU

xmllint: XPath set is empty


0

1

Есть файл fb2:

<?xml version="1.0" encoding="UTF-8"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0" xmlns:l="http://www.w3.org/1999/xlink">
  <description>
  <title-info>
   <genre>sf</genre>
   <author>    
    <first-name>Александр</first-name>
    <last-name>Бушков</last-name>
   </author>
   <src-lang>ru</src-lang>
   <book-title>Тринкомали</book-title>
   <lang>ru</lang>
  </title-info>
  <document-info>
   <author>
Хочу получить значение тега <first-name> и получаю «ничего».
$ xmllint --xpath '/FictionBook/description/title-info/author/first-name/text()' 10001-utf8.fb2
XPath set is empty
$
Что я делаю не так?



Последнее исправление: Axa (всего исправлений: 1)

У меня и вовсе сегфолтится на приведённом файле (теги все закрыл):

$ xmllint --xpath '/FictionBook/title-info/author/first-name/text()' 1.fb2
Ошибка сегментирования
$ xmllint --version
xmllint: using libxml version 20708
   compiled with: Threads Tree Output Push Reader Patterns Writer SAXv1 FTP HTTP DTDValid HTML Legacy C14N Catalog XPath XPointer XInclude Iconv ISO8859X Unicode Regexps Automata Expr Schemas Schematron Modules Debug Zlib 
anonymous
()
Ответ на: А всё дело в namespace.... от sanwashere

sanwashere, спасибо.

результирующее выражение будет выглядеть так:

$ echo -e 'setns fb=http://www.gribuser.ru/xml/fictionbook/2.0\ncat /fb:FictionBook/fb:description/fb:title-info/fb:author/fb:first-name/text()' | \
xmllint --noout --shell file.xml | sed '/^\/ >/d' | sed '/^ -------/d'| sed 's/<[^>]*.//g'
Александр
$
Axa
() автор топика
Ответ на: комментарий от anonymous

Возможно, я вырезал кусок некорректно.
Можно взять любую книгу fb

Axa
() автор топика

NS можно игнорировать

'/*[name()=«FictionBook»]/*[name()=«description»]/*[name()=«title-info»]/*[name()=«author»/*[name()=«first-name»/text()'

Вот так не важно какое там пространство имён.

anonymous
()
Ответ на: NS можно игнорировать от anonymous

Ага, спасибо. lj,добавил пропущенные скобки.

$ xmllint --xpath "/*[name()='FictionBook']/*[name()='description']/*[name()='title-info']/*[name()='author']/*[name()='first-name']/text()" file.xml
&#x410;&#x43B;&#x435;&#x43A;&#x441;&#x430;&#x43D;&#x434;&#x440;
$

Axa
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.