Я пытаюсь видеть, как libxml реализует поддержку XPath, таким образом, имело смысл мне тестировать использование xmllint. Однако очевидная опция, - шаблон, несколько неясна, и я закончил тем, что использовал что-то как следующее:
test.xml: <foo><bar/><bar/></foo>
> xmllint --shell test.xml
/ > dir /foo
ELEMENT foo
/ > dir /foo/*
ELEMENT bar
ELEMENT bar
Это, кажется, работает, и это является большим, но мне все еще любопытно. Что такое xmllint's - опция шаблона для, и как это работает?
Обеспечьте пример для полного кредита.=)
Из справочной страницы xmllint (1):
--pattern PATTERNVALUE
Used to exercise the pattern recognition engine, which can be
used with the reader interface to the parser. It allows to
select some nodes in the document based on an XPath (subset)
expression. Used for debugging.
Он понимает только подмножество XPath и его намерение состоит в том, чтобы помочь отладке. Библиотека, которая полностью понимает XPath, - это libxslt (3) и ее инструмент командной строки xsltproc (1).
Модуль «шаблон» в libxml «позволяет компилировать и тестировать выражения шаблона для узлов в дереве или на основе состояния парсера», и его документация находится здесь: http://xmlsoft.org/ html / libxml-pattern.html
Ари.