问题标签 [saxon]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
684 浏览

java - 在自定义 XPath 函数中获取 XML 数据

当我们制作自己的自定义 XPath 函数时,有没有办法获取当前的 xml 数据(请参见此处)。

我知道您可以访问 an ,XPathContext但这是否足够?

例子:

我们的 XML:

我们的 XSL:

我们如何获得整个 XML 树?

编辑:澄清一下:我正在创建一个最终执行静态 Java 代码的自定义函数(这是撒克逊人的特性)。因此,在这段 Java 代码中,我希望能够从 XML 树中获取元素,例如 bar 和 fizz,以及它们的 CDATA,例如 smang 和 Buzz。

0 投票
1 回答
592 浏览

java - 撒克逊 Xalan JSP

我有一个 JSP,它将 XSL 附加到从数据库中提取的 XML 文档。该应用程序使用的是 Saxon Parser,但我的 XML 需要使用 Xalan 解析器。JSP 页面可以覆盖要使用的解析器吗?

0 投票
2 回答
4597 浏览

xml - 如何从 XSLT 中获取未解析的实体属性值?

我对 XSLT 和 XML 中未解析的实体有疑问。这是一个虚构的场景。首先,我得到一个名为 doc.xml 的 XML 文件:

在这个 XML 文件中,我对元素“employee”的属性“detail”使用了一个未解析的实体 (NDATA)。attach.xml 是:

然后我想使用 XSLT 生成输出以及嵌入的 attach.xml。我的 XSLT 文件名为 doc.xsl:

最后,我使用 Xalan 2.7.1 运行:

输出是:

这不是我想要的。我希望输出如下所示:

我应该如何重写 XSLT 脚本以获得正确的结果?

0 投票
2 回答
1699 浏览

java - 如何使用 Xalan 更改一些现有的 Java XSLT 代码以使用 Saxon 和 TinyTree

我有一些以编程方式执行 XSLT 转换的现有 Java 代码 - 最初使用 Xalan。我已经对其进行了重构,以便能够使用另一个(外部配置的)TransformerFactory。

我曾尝试使用 Saxon(v6.5.3 和 v8.7)工厂,但没有看到任何性能改进 - 如果有的话,Saxon 比 Xalan 更慢并且使用更多内存。

我知道我可以使用 Saxon TinyTree 获得一些性能优势,但无法弄清楚如何使用此代码来做到这一点。

我的代码是这样的;

其中 'transformerFactoryClass' 是配置的 TransformerFactory 类的实例
- Xalan 的 org.apache.xalan.processor.TransformerFactoryImpl
- Saxon 8.7 的
net.sf.saxon.TransformerFactoryImpl 和 Saxon 6.5.3 的 com.icl.saxon.TransformerFactoryImpl

有什么建议么?

0 投票
1 回答
1201 浏览

xslt - XSLT 编码问题,结果中有问号

我正在尝试运行 XSLT 转换,但像 ëöï 这样的字符被替换为文字 '?' 在输出中(我用十六进制编辑器检查)。源文件具有正确的字符,样式表具有:

我还缺少什么?

如果这很重要,我正在使用撒克逊人作为变压器。

0 投票
1 回答
5916 浏览

xml - 使用 ant 和 xslt 动态连接 xml 文件

问题

我们有大量的 xml 配置文件,我们希望在构建时将它们合并到一个主版本中。较小的配置文件更容易维护,一个大文件加载速度更快,所以我认为这是一种流行的构建转换过程,我会在网上找到很多很好的例子。

我能够在 StackOverflow找到一些解决问题的一部分的好方法,但它们都依赖于知道需要预先合并的 xml 文件的名称。这对我来说似乎是不必要的开销。应该可以编写一个构建脚本,该脚本可以动态计算需要哪些输入 xml 文件。

不幸的是,我能找到实现这一目标的唯一方法是有点破解。它是这样工作的,

  1. 使用我从互联网上偷来的随机蚂蚁任务将目录列表写入 xml 文件。
  2. 将 xml 文件输入 xslt 转换,然后可以加载其他目录列表引用的 xml 文件并将它们连接起来。
  3. 删除包含目录列表的临时 xml 文件。

这是蚂蚁脚本

这是样式表,

有没有人找到一种更简单的方法来实现在 XSLT 中合并哪些文件的动态发现?XSLT 不能直接读取目录并不奇怪,但我希望找到一种比通过另一个 xml 文件更简单的方法来传递文件名列表。

已实施的解决方案

一旦我对 ant 脚本进行了一些额外的调整,Dimitre 的解决方案就非常有效,

[...]

和 xsl 样式表(我移动的)

这些调整只是让 Saxon9 加载并使用参数设置目录。

0 投票
1 回答
543 浏览

java - 使用正确的 JRE 从批处理文件启动 Java 应用程序

java net.sf.Saxon.transform...我有一个非常简单的批处理文件,它使用简单的命令“ ”启动 Java 应用程序(Saxon)

此应用程序需要 java 版本 1.5。

这个批处理文件将被 400 多个用户使用,每个用户可能在他们的机器上安装了某些版本的 JRE,也可能没有。

我原以为只需安装最新版本的 JRE 就可以解决问题,但不是:在我们的初步测试中,虽然安装了最新版本的 JRE(1.6.0_13),但命令“ java”调用旧的 Java 版本(1.3.1...)。

从批处理文件中执行以下操作的最简单(但最强大)的方法是什么:

  • 检查哪个是最近安装的 JRE
  • 如果最新版本 >= 1.5,则使用批处理命令中的此 JRE
  • 如果没有,告诉用户去下载最新的 JRE

即使机器上根本没有安装 JRE 版本,这也应该可以工作。

我已经阅读了一些关于 Java Webstart 的信息,但不确定它是否是最简单的工具。我不知道它是否必须安装,是否可以在没有安装任何 Java 版本的情况下运行,等等。

还有什么其他工具可以做到这一点?

0 投票
1 回答
2469 浏览

visual-studio - 使用 Saxon .NET XSLT 处理器不适用于 Visual Studio 中的智能感知

我正在使用用于 .NET 的开源Saxon XSLT 处理器来执行一些 2.0 转换。

我像引用任何其他 dll 一样引用 saxon9api.dll,并且可以针对它编译代码。但是,Visual Studio 没有显示任何智能感知功能,使 IDE 与记事本一样有用。

saxon9api.dll 使用IKVM Java for .NET平台,我想知道这是否是导致 VS 问题的原因。Reflector 可以毫无问题地检查 DLL,但我怀疑 VS 出于某种原因不高兴。

有任何想法吗?

编辑:

令人惊讶的是,没有人遇到过这种行为,因为 Microsoft建议 (链接现已失效)在框架中缺少内置功能的情况下使用 Saxon。

我想我会将问题改写为关于在 IKVM 下运行的程序集没有显示智能感知,尽管我需要找到另一个基于 IKVM 的项目来证明首先是这种情况......

0 投票
2 回答
2364 浏览

java - Saxon 8(Java版)问题

我现在要指出,我是使用 saxon 的新手,我已经尝试按照包中的文档和示例进行操作,但我只是没有运气解决这个问题。

基本上,我正在尝试使用 saxon v8 在 java 中进行一些 xml 处理。为了让某些东西正常工作,我采用了包中包含的一个示例文件并根据我的需要进行了修改。只要我不使用名称空间,它就可以工作,这是我的问题。如何解决命名空间问题?我真的不在乎使用它,但它存在于我的 xml 中,所以我要么必须使用它,要么忽略它。任何一种解决方案都很好。

无论如何,这是我的入门代码。它什么也不做,只是进行一个 xpath 查询尝试将它用于硬编码的 xml 文档。

一个示例 XML 文件在这里...

如果我使用包含命名空间的查询运行它,我会收到错误消息。例如: /ns1:animal/cat/给出错误:“Prefix ns1 has not been declared”。

如果我从查询中删除 ns1: ,它什么也没给我。如果我修改 xml 以删除“动物”前面的“ns1:”,我可以/animal/cat/成功运行查询。

任何帮助将不胜感激。谢谢。

0 投票
1 回答
1780 浏览

tomcat - 撒克逊 XMLBeans Tomcat

我们最近更新了 Tomcat Web 服务。我们真正更新的唯一事情是我们将 XMLBeans 更新到了 2.4 版,将 Saxon 更新到了 9 版。

运行它 Netbeans 和 eclipse,我们的项目现在工作正常,但是当尝试部署到 tomcat 时,我们得到以下结果。

我们尝试将 JAXEN 更新到 1.1.1 版,但没有任何乐趣。

有任何想法吗?

我们在部署中遇到的错误是:

p>