2012-01-25 2 views
3

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

<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 из командной строки?
Shell скрипт будет достаточно, также, если это возможно

Update:
Просмотр Saxon documentation, я узнал о XPathExample образца. К сожалению, я не могу его использовать

ответ

5

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

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

Input.xml

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

саксонской командной строки (я использовал Saxon9-ОН, чтобы проверить с)

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

результаты.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

+0

ОК, спасибо. Я только начал изучать XML и нуждался в простом процессоре XPath 2.0.Я не знал, что могу использовать XQuery. 'saxon-xquery' в'/usr/bin/', который является ярлыком' java -classpath /usr/share/java/saxonb.jar net.sf.saxon.Query "$ @" 'не может выполнить выше параметров фрагмента , но вызывая буквально ('saxon9he.jar'), как в вашем примере, отлично работает. – theta

1

Как говорит @DevNull, используя 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.

+0

Спасибо за ваш вклад. Версия 9.0.0.4 - по умолчанию - Ubuntu 11.04. Я загрузил последнюю версию из SourceForge после того, как я успешно выполнил шаблон XPath. Я просто удалю версию Ubuntu и создаю новые удобные ярлыки в/usr/bin /. Я не могу найти способ подавить XML-декларацию с вывода, ты – theta

+1

Обнаружил, что метод вывода может использоваться как параметр, такой как этот пример: '\!" Method = text "' in 'bash'. В 'sh' не требуется обратная косая черта – theta

1

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

enter image description here

+0

Несомненно, но это коммерческое программное обеспечение java, которому также нужна высококачественная машина. Для оценки XPATH, локально или по HTTP, 'saxon' или' xmllint' более чем достаточно и могут быть интегрированы в любой удобный для пользователя инструмент/редактор. – theta

+1

Коммерческая с/с; так и саксонский. :-) Подобно Saxon, oXygen - очень хорошее коммерческое программное обеспечение, которое стоит каждый пенни, особенно если вы выполняете разнообразную работу с XML. Нет, вам не нужна машина высокого класса; мой 2-летний ноутбук запускает его просто отлично. Это жизнеспособный вариант, учитывая требования OPs; больше вариантов лучше. –

+0

Я так не думаю. Существуют также различные коммерческие и некоммерческие продукты, которые могут выполнять XPATH, или использовать уже имеющиеся процессоры для выполнения этой работы. Кислород далек от хорошего предложения: 1. Он разработан, чтобы делать больше, чем просто XPATH, и может запутать пользователя, который хочет сделать именно это; 2. Для этого требуется, по крайней мере, хороший многоядерный процессор с достаточным количеством ОЗУ; 3. Вы можете купить себе новый ПК за деньги, которые вы платите, за использование процессора XPATH от Java GUI, который вы можете делать бесплатно с терминала – theta

Смежные вопросы