Это часть моего XML:Извлечение атрибутов из файла XML с помощью xmllint
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<nlpcmp>
<word string="getuserscount" occurrences="2">
<systems>
<system name="mks">
<pos file="IrcChannel.cpp" part="adjective" line="414" occ="2"/>
</system>
</systems>
</word>
<word string="setuserprivilege" occurrences="2" >
<systems>
<system name="mks">
<pos file="IrcChannel.cpp" part="adjective" line="375" occ="2"/>
</system>
</systems>
</word>
<word string="hasprivilege" occurrences="2" >
<systems>
<system name="mks">
<pos file="IrcChannel.cpp" part="verb" line="360" occ="2"/>
</system>
</systems>
</word>
<word string="partmessage" occurrences="2" >
<systems>
<system name="TEST">
<pos file="IrcChannel.cpp" part="verb" line="308" occ="2"/>
</system>
</systems>
</word>
</nlpcmp>
Я пытаюсь найти список строк для систем, которые называют MKS только с использованием xmllint
вывод должен дать мне:
getuserscount
setuserprivilege
hasprivilege
поэтому я попробовал эту команду:
xmllint --xpath 'string(//nlpcmp/word/@name)' file.xml
и не было никакого вывода, то я попробовал:
xmllint --xpath "//*[local-name()='word'][system/@name[mks]" file.xml
и говорит: XPath ошибка: Invalid предикат xmlXPathEval: оценка не удалось
Затем я попытался
xmllint --xpath "//*[local-name()='word']" file.xml
и он дал мне все содержимое тега «word», чего я не хочу. Мне нужны строки. Как я могу это сделать?
Это сработало отлично! Большое спасибо! – Developer