问题标签 [xalan]

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 回答
280 浏览

java - Xalan XPathAPI 遍历问题

我正在尝试使用 xalan XPathAPI 解析 xhtml 文件。我坚持以下要求。这是来自 xhtml 的片段

我在这里面临几个问题。

  1. 我正在尝试提取 cmnt_message 类的值。一个是第一个块下的“发布者...”文本和 cmnt_text 下的文本内容。这是第一个由 part 发布的 xpath

/html:html/html:body//html:div[@class='content_d']/html:table[@class='cmnt_message']/html:tr[1]/html:td[2]/text( )

这将返回“由 Macha 于 2011 年 3 月 6 日下午 1:02 发布”,这就是我想要的。但是当我尝试使用以下 xpath 表达式获取 cmnt_text

/html:html/html:body//html:div[@class='content_d']/html:table[@class='cmnt_message']/html:tr[2]/html:td/text()

我得到“@rmaytee”,即直到 first 的值
。我试图在 cmnt_text 中获取整个文本。

  1. 另一个问题是我需要遍历 cmnt_message 并创建一个 Message 对象的集合,该对象由发布者和评论组成。不确定如何使用 Xpath 进行迭代。

    SAX2DOM sax2dom = 新 SAX2DOM(); p.setContentHandler(sax2dom); p.parse(new InputSource(urlXML.openStream())); 节点文档 = sax2dom.getDOM(); XObject 注释 = XPathAPI.eval(doc,commentPath);

但这只会让我第一次出现 cmnt_message 类。

任何指针将不胜感激。

  • 谢谢
0 投票
1 回答
273 浏览

xslt - 从 XSL 转换的结果中排除命名空间声明

我正在使用各种转换部分地生成 XML 文档。特别是,我正在生成一个包含所有命名空间声明的标题,然后将其添加到文档中。但是,转换不知道这一点,因此坚持另一个声明。这通常不是问题,但是数以百万计的这些东西被生成并存储在数据库中,所以有大量的冗余声明浮动是相当烦人的。

如何关闭命名空间声明的生成?我已经看到了该exclude-result-prefixes属性,但是该文档指出无论如何都会添加已用名称空间的声明,这似乎使该选项毫无意义。

0 投票
1 回答
689 浏览

java - 为什么 xalan 不使用格式错误的 XML 引发 TransformException 错误

在我的单元测试中,我试图通过将一些格式错误的 xml 发送到 javax.xml.transform.Transformer 的 org.apache.xalan.processor.TransformerFactoryImpl 实现来引发 TransformException 错误

打电话

控制台显示以下消息,但没有抛出 TransformerException

关于它为什么不抛出 TransformerException 或者我如何在这种情况下引发异常的任何想法?

我尝试过使用 saxon 并抛出了 TransformerException,但我更喜欢使用 xalan

谢谢

0 投票
2 回答
2271 浏览

java - XSLT 处理递归深度

首先让我声明我根本不知道 XSLT。我的任务是调查在 XSLT 处理期间发生的 Java OutOfMemory 异常的一些 JVM 转储。

我发现 OutOfMemory 发生在递归 XSLT 处理期间(我们使用 XALAN)。

我发现令人震惊的是递归深度超过 100 000 次。

在什么情况下可以接受 XSLT 处理期间如此深的递归?


请注意,线程堆栈跟踪大约有 300k 行长,并且在 OutOfMemory 发生之前充满了这种变化:

at org/apache/xalan/transformer/TransformerImpl.executeChildTemplates(Bytecode PC:150(Compiled Code)) at org/apache/xalan/templates/ElemElement.execute(Bytecode PC:352(Compiled Code)) at org/apache/xalan/transformer/TransformerImpl.executeChildTemplates(Bytecode PC:150(Compiled Code))

0 投票
4 回答
13081 浏览

java - 如何防止具有 META-INF\services\javax.xml.transform.TransformerFactory 的 xalan.jar 接管 Xalan 实现中内置的 JDK 1.6?

考虑这段代码(完全基于飞碟的“入门”代码,保留他们的权利):

几个事实:

  1. 使用 JDK 1.6 或 1.5 独立运行(调用 main)可以完美运行(生成 PDF)
  2. 但是,当从现有 Web 应用程序通过 URLClassLoader 加载时,它会失败并出现以下错误:

在错误的地方找了一会儿(例如,我创建了一个 child-first / parent-last 类加载器怀疑 xalan / xerces jar,但它仍然失败),我终于缩小了根本原因:

似乎加载我的代码的 Web 应用程序有一个旧的xalan.jar,规范版本 1.2

我做了一个小测试,我将上面的代码作为独立的代码运行(之前运行良好),但是这次我将 web 应用程序中的xalan.jar添加到它的类路径和宾果游戏中,与 web 应用程序场景中的错误相同

所以我检查了那个旧的 xalan.jar 并想知道,什么会导致 JVM 加载它的旧 xalan 实现而不是 JDK 的?毕竟我的 child-first 类加载器也是 parent-last eg system in the middle,说:在父级之前搜索系统类加载器(以避免加载父级覆盖的 JDK jar,就像这种父级的 xalan.jar 覆盖JDK的xalan实现)

然后有些东西让我眼前一亮——位于:xalan.jar/META-INF/services/的文件名为javax.xml.transform.TransformerFactory,内容如下:

所以我立即在 eclipse 中按下Ctrl+T并寻找完整的限定名称......仅在xalan.jar

然后我只搜索“TransformerFactoryImpl”,这就是 JDK 所拥有的:

很容易看出区别

所以,如果你读到这里,我的底线问题是:如何让我的 TransformerFactory 使用 JDK 的实现而不是旧的 Xalan 的实现?(我无法从要加载我的代码的 Web 应用程序中删除该 jar)

0 投票
2 回答
569 浏览

java - 取决于不同 Xalan 实现的两个程序如何在同一个 VM/系统类加载器中共存?

我以多种方式问了这个问题,但我认为我问的问题不正确。我现在怀疑 Xalan,因为它正在实现 Java 认可的标准,所以在给定的 VM / ClassLoader 上只能有一个实现。

这是真的吗?不能在同一个系统类加载器中“生活”2 个 Xalan 实现吗?或者如果他们可以,如何

0 投票
2 回答
3457 浏览

java - xslt 编码特殊字符

我使用 Java 和Xalan 2.7将一个 XML 转换为另一个。

来源是StreamSource(UTF-8 Reader); 结果是StreamResult(ByteArrayOutputStream)

现在我的模板设置为使用UTF-8(注意版本 1.0):

现在我希望输出对所有特殊字符进行编码。类似2.0字符映射的东西,因此€ = &#euro;或十六进制等效。

如何以最少的努力做到这一点?

0 投票
3 回答
1989 浏览

java - Xalan 的 TransformerFactoryImpl 是线程安全的吗?

org.apache.xalan.processor.TransformerFactoryImpl线程安全吗?还是我必须为每个线程保留一个本地副本?

0 投票
2 回答
5135 浏览

xpath - XML 中的前同级

我有一个这样的 XML 数据:

在我的 xsl 代码中,我在一个节点数量内,我想获取标签“数据”的值,谁是这个标签数量的父级?

我将 xalan 与 xslt1.0 和 apache fop 一起使用

注意:我尝试过:

但还是错了。

0 投票
1 回答
408 浏览

xpath - 使用 XPATH 的 Xalan 问题(未关闭的标签)

问候,

我面临以下技术堆栈的问题:JWebUnit -> HtmlUnit -> Xalan。我正在尝试通过 XPATH 查找元素,但 HTML 文档的格式非常错误。

当我到达/bodyXPATH 上的元素时,Xalan 停止查找元素。我相信这是因为文档包含两个<body>标签,一个是未关闭的。

一切都适用于/html/heador /html。但是当我尝试/html/body(或/html/body[1],//body[1]或这些标签内的任何内容)时,我只能从 Xalan 得到 null 。

有什么办法可以解决这个问题吗?我只是无法更改 html 文档本身。感谢您的关注。

最好的问候,蒂亚戈