2016-05-20 1 views
1

Я пытаюсь прочитать версию файла POM Maven с помощью Saxon CLI следующим образом:Как определить пространство имен XML в Saxon CLI, чтобы я мог запрашивать вещи в этом пространстве имен?

java -cp Saxon-HE-9.7.0-4.jar net.sf.saxon.Query -s:./pom.xml -qs:/project/version \!method=text 

Файл pom.xml выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>foo</groupId> 
    <artifactId>bar</artifactId> 
    <packaging>pom</packaging> 
    <name>baz</name> 
    <version>0.0.1-SNAPSHOT</version> 
</project> 

Я получаю сообщение об ошибке, потому что Я указываю пространство имен по умолчанию. Если я опускаю это объявление пространства имен (xmlns="http://maven.apache.org/POM/4.0.0"), запрос работает. Я собрал в саксонской документации, что мне нужно сделать что-то вроде, возможно, определить обработчик пространства имен, но я считаю, что я внезапно погружаюсь в пространство имен XML esoterica. Кто-нибудь знает, как это сделать с помощью простой опции в командной строке Saxon?

ответ

2

Я был бы склонен использовать -qs:/*:project/*:version из командной строки, поскольку это работает с любым пространством имен.

В противном случае вам нужно будет использовать https://www.w3.org/TR/xquery-30/#id-default-namespace, но это, вероятно, боль с кавычками и интерпретатором командной строки.

+0

Perfecto, @Martin, только то, что мне нужно! – nclark

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