如何在 Saxon CLI 中定义 XML 命名空间,以便我可以查询该命名空间中的内容?
How to define XML namespace in Saxon CLI such that I can query on things in that namespace?
我正在尝试使用 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 名称空间的秘密。有人知道如何使用 Saxon 命令行上的一个简单选项来执行此操作吗?
我倾向于从命令行使用 -qs:/*:project/*:version
,因为它适用于任何命名空间。
否则你需要使用 https://www.w3.org/TR/xquery-30/#id-default-namespace 但使用引号和命令行解释器可能会很痛苦。
我正在尝试使用 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 名称空间的秘密。有人知道如何使用 Saxon 命令行上的一个简单选项来执行此操作吗?
我倾向于从命令行使用 -qs:/*:project/*:version
,因为它适用于任何命名空间。
否则你需要使用 https://www.w3.org/TR/xquery-30/#id-default-namespace 但使用引号和命令行解释器可能会很痛苦。