问题标签 [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 投票
4 回答
11673 浏览

java - 通过 Java 读取 XML、替换文本和写入相同的 XML 文件

目前我正在尝试一些非常简单的事情。我正在通过 XML 文档查找某个短语,我试图用它来替换它。我遇到的问题是,当我阅读这些行时,我将每一行存储到一个 StringBuffer 中。当我将它写入文档时,所有内容都写在一行上。

这是我的代码:

当我更喜欢 sb.append 时,我假设我需要一个换行符,但不幸的是我不知道将哪个字符用作“\n”不起作用。

提前致谢!

PS 我想一定有一种方法可以在我写入 XML 文件后使用 Xalan 格式化它或其他东西。不知道该怎么做。

0 投票
2 回答
1052 浏览

java - SAXON 中的 XALAN 寄存器扩展功能

我想通过 XSLT 和 XALAN 转换 XML。现在我想使用一个扩展函数,这个函数必须像 SAXON 一样添加到 JAVA 源代码中:

方法:

Foo扩展:

但是它在 XALAN (?FunctionTable?, ?FunctionResolver?, ?URIResolver?) 中是如何工作的,我必须通过源代码来完成,我不允许在 XSLT 中添加类。

谢谢!!

0 投票
2 回答
4055 浏览

java - 仅针对特定标签通过 XSLT 从 XML 中删除特殊字符

我的 XML 中存在特殊字符的问题。基本上,我正在使用 Xalan 处理器将一个 xml 拆分为多个 xml。

在拆分文档时,我使用它们的名称标签值作为生成的文件的名称。问题是名称包含 XML 处理器无法识别的字符,例如 ™ (TM) 和 ® (R)。我只想在命名文件时删除这些字符。

以上是我编写的用于将 XML 拆分为 multlpe XML 的 XSL 代码。如您所见,我正在使用 hte translate 方法将名称中的 '/','<','>' 替换为 ''。我希望我可以对 ™ (TM) 和 ® (R) 做同样的事情,但它似乎不起作用。请告诉我我将如何做到这一点。

感谢您提前提供帮助。

0 投票
2 回答
2167 浏览

xml - 提取句子中每个单词的第一个字母,通过 XSLT 将其变成一个单词

我正在尝试通过 XSLT 提取句子中每个单词的第一个字母以形成一个单词。样本输入

预期输出:

提前致谢 :)。

PS 我也在使用 XALAN 处理器。

0 投票
2 回答
1572 浏览

xml - 在 XSL 中使用 Javascript 时出错

我有一个 XML 文档,并且正在使用 XSL 创建另一个 XML。我需要检查一些特定条件,为此我想在我的 XSL 中使用 Javascript。但是我试过了,没有得到想要的结果。由于我无法频繁更改 XSL 变量,因此我尝试使用 Javascript。

XSL-

这给了我一条错误消息-

[7/20/10 16:41:47:106 IST] 0000002e SystemErr R org.apache.xalan.extensions.ObjectFactory$ConfigurationErrororg.apache.bsf.BSFManager 未找到提供程序

请指教,我哪里出错了?

0 投票
1 回答
146 浏览

xml - XSLT 一种 XML,这样除了一个部分之外,一切都相同

只是一个快速的问题。我有一个 XML,我希望只转换其中的一部分而不更改其他任何内容。这是我想要做的一个简单的例子:

输入:

输出

如果有帮助的话,我正在使用 XALAN 处理器。提前非常感谢:D

0 投票
2 回答
885 浏览

java - 为什么我不能使用通过在 XPath 表达式中使用 exsl:node-set/set:distinct 检索到的节点的值?

在 xslt-stylesheet 中,我使用方法exsl:node-setset:distinct从包含结果树片段的变量中访问和过滤唯一节点。我可以将这些节点的值写入我的输出文件,例如:

正如预期的那样,键的值被写入输出。但是,如果我尝试使用 XPath 表达式中的值,它会失败:

现在,输出是空的,而我知道我的 input-xml 中有一个“somenode”应该由 XPath 表达式选择,并且它的值不为空。

现在我的问题是:为什么会发生这种情况?

我正在使用 Java 1.6、Xerces 2.7 和 Xalan 2.7。

更新:根据要求,示例的一些数据:xml doc 包含:

getNodes 模板:

0 投票
4 回答
9173 浏览

function - Xalan 2.7 中缺少字符串函数,改用 java.lang.String 吗?

我正在使用 Xalan 2.7.0(与 Apache FOP 1.0 捆绑在一起)并且在使用字符串函数时遇到问题。

该行<xsl:value-of select="fn:replace('test', 't', '*')"/>导致此异常:

<xsl:value-of select="fn:string-length('foobar')"/>结果是:

现在这很奇怪!为什么 XalanstringLength在 上寻找函数java.lang.String?我测试<xsl:value-of select="fn:substring('foobar', 2, 3)"/>了 ,确实:结果是o,所以参数被用作startIndex, endIndex(like java.lang.String.substring()) 而不是 XPath 的函数fn:substring(string, start, length)

所以我认为 Xalan 不知何故缺少它的 XPath 函数库,而是使用常规的 String 类。我通过调用不存在的函数来确认这一点,该函数fn:index-of('foobar', 'bar')可以正常工作并映射到java.lang.String.indexOf(str).

为什么 Xalan 会这样做?我该如何解决?

系统信息:Xalan 使用标准的 Mac OS X 10.6.4 Java 版本,1.6.0_20。

更新

好的,暂时先搁置该replace()功能。作为 XSLT 1.0 处理器的 Xalan 不应该实现XPath 1.0 函数子字符串 (string, startIndex, length)而不是(string, startIndex, endIndex)我在过期时看到的函数吗?这个 startIndex、endIndex 函数看起来像 的 substring 方法是巧合java.lang.String吗?

为什么我在使用该fn:string-length函数时会收到 NoSuchMethodError?

这里出了点问题,显然与 XPath 1.0 与 2.0 无关……

0 投票
5 回答
8811 浏览

java - 将 xml 节点/文档/片段作为参数传递给 xslt

我试图将w3c.dom.Document,ElementNodeList作为参数传递给 xslt 转换。

我希望能够在 xslt 中处理它:

我将参数传递为:

我得到这个例外:

'从'com.sun.org.apache.xerces.internal.dom.DocumentImpl'到'node-set'的无效转换。'

我也试过exslt:node-set()xalan:nodeset()等等,但它不起作用。

似乎 xalan 在内部排除了他自己的 Node.js 实现。

我怎样才能做类似的事情而不会出现这个问题?

我不能使用document($param),因为我是动态构建文档的。

0 投票
1 回答
9312 浏览

java - 错误:“非静态 Java 函数 'evaluate' 的第一个参数不是有效的对象引用。” 使用 TrasformFactory 时

我正在尝试将 xsl + xml 转换为 xml(稍后使用 FOP 库将其转换为 pdf)。我使用的JDK是1.5,我无法使用另一个(这是我工作的公司正在使用的)。我读到 java 1.5 的 xalan jar 是导致错误的原因。导致错误的文本是:

在:

有没有办法在不改变罐子的情况下绕过它?有没有办法以不同的方式编写它?还是我使用了错误的语法?

谢谢你的帮助