我正在尝试使用Saxon CLI读取Maven POM文件的版本,如下所示:

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"),则查询有效。我从Saxon文档中收集到我需要做的事情,例如定义一个名称空间处理程序,但是我发现我突然陷入了XML名称空间esoterica中。有人知道如何使用Saxon命令行上的简单选项来执行此操作吗?

最佳答案

我倾向于从命令行使用-qs:/*:project/*:version,因为它可以与任何名称空间一起使用。

否则,您将需要使用https://www.w3.org/TR/xquery-30/#id-default-namespace,但是使用引号和命令行解释器可能会很麻烦。

08-18 11:03
查看更多