Как использовать процессор Saxon XPath без кодирования в Java - PullRequest
3 голосов
/ 25 января 2012

Полагаю, я мог бы создать некоторую таблицу стилей XSL, а затем использовать ее в качестве шаблона с параметром для оценки выражения XPath с процессором Saxon XSLT в командной строке, например:

<xsl:template match="/">
  <xsl:copy-of select="saxon:evaluate($xpath-param)"/>
</xsl:template>

Также другая возможность заключается в использованииих Java API: http://www.saxonica.com/documentation/xpath-api/intro.xml но я не знаю Java

Есть ли способ заставить Saxon вычислять выражение XPath из командной строки?
Сценария оболочки тоже будет достаточно, если это возможно

Обновление:
Просмотр саксонской документации , я узнал о XPathExample образце.К сожалению, я не могу использовать это

Ответы [ 3 ]

6 голосов
/ 25 января 2012

Вы можете запустить Saxon (XQuery) из командной строки. Вы можете сделать это, указав на файл с XPath / XQuery, используя -q, или вы можете передать строку запроса напрямую, используя -qs.

Вот пример использования -qs для обработки простого XPath:

Input.xml

<a>
  <b id="x"/>
  <b id="z"/>
  <b id="x"/>
</a>

Саксонская командная строка (я использовал Saxon9-HE для тестирования)

java -cp "saxon9he.jar" net.sf.saxon.Query -s:"input.xml" -qs:"/a/b[@id='x']" -o:"results.xml"

Results.xml

<b id="x"/><b id="x"/>

Примечание: я мог бы сделать свой вывод правильно сформированным, изменив -qs на что-то вроде этого: -qs:"<results>{/a/b[@id='x']}</results>".

Дополнительные параметры командной строки см. Здесь: http://www.saxonica.com/html/documentation/using-xquery/commandline.html

1 голос
/ 23 марта 2012

Другой вариант - использовать XPath в инструменте, например oXygen . XPath Builder View - очень удобный интерфейс для построения и тестирования выражений XPath. Существует версия Linux этого инструмента, и он имеет встроенную поддержку Saxon и других процессоров (Xerces, LIBXML, XSV, MSXML4.0, MSXML .NET и SQC. ).

enter image description here

1 голос
/ 25 января 2012

Как говорит @DanielHaley, лучше использовать XQuery из командной строки.Предоставление XPath из командной строки было бы не очень полезным, поскольку XPath не предлагает никакого способа управления форматированием вывода.XPath - это подмножество XQuery, поэтому вы можете использовать интерфейс XQuery для оценки выражений XPath, если захотите.

Обратите внимание, что текущей версией Saxon с открытым исходным кодом является Saxon-HE 9.4.0.2.Вы можете узнать, какую версию вы используете, с помощью опции -t в командной строке.Звучит так, как если бы вы могли найти старую версию (Saxon-B) в комплекте с вашим дистрибутивом Linux, а @prunge указал вам на еще более старую версию (Saxon 6.5), которая поддерживает только XSLT 1.0 и XPath 1.0.

ОБНОВЛЕНИЕ : по состоянию на январь 2019 года текущая версия Saxon - 9.9.0.2

...