问题标签 [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.
java - URIResolver、Docbook 和 XSL 转换
我正在尝试使用 Java / Xalan 以及来自https://sourceforge.net/projects/docbook/files/docbook-xsl/1.76.1/的官方 Docbook XSL 文件与一些本地 xsl的混合将一些 Docbook XSL 转换为 HTML提供一些自定义和覆盖的文件。
我想防止我的应用程序不得不下载外部资源或访问本地文件。所以我实现了一个扩展 URIResolver 接口的类。
问题是该resolve(final String href, final String base)
函数没有提供足够的信息来识别正在请求的特定文件。
例如,本地覆盖文件之一是使用 .xsl 文件从 xsl 文件导入的<xsl:import href="../../../xsl/html.xsl"/>
。在这种情况下,我的解析器类的 href 参数设置为 ../../../xsl/html.xsl,这很好。html.xsl 文件然后导入一个名为 defaults.xsl 的文件。href 参数设置为仅 defaults.xsl,base 参数设置为 null。
这之后可能会导入http://docbook.sourceforge.net/release/xsl/current/xhtml/docbook.xsl,在这种情况下 href 参数设置为http://docbook.sourceforge.net/release /xsl/current/xhtml/docbook.xsl。但是,如果 docbook.xsl 导入了一个名为 defaults.xsl 的文件,则 href 参数也设置为 defaults.xsl 并且 base 设置为 null。
问题是 href 和 base 参数不能唯一标识资源,而且您也无法通过查看先前 href 的顺序来猜测正在请求哪个文件。是否有一些技巧可以准确找出请求文件的上下文?
java - Barcode4j 不工作(在 Unix 上)
对于我的项目,我需要为 PDF 生成条形码。
我已经能够在我的本地 Windows 服务器上成功生成条形码,在生产 UNIX 服务器上,生成失败。
我使用barcode4j,需要生成code39。
我的模板:
我的图书馆:
- 条形码4j-fop-ext-complete-2.0
- 夏兰
- xercesImpl
- xml-api
- xml-apis-ext
xslt - 如何在 XSLT 中做到这一点而不增加变量?(调整 Xalan 以创建全局 XSLT 迭代器。我还有其他选择吗?)
我试图用 XSLT 术语尽可能多地考虑功能,但在这种情况下,如果不进行调整,我真的不知道如何做到这一点。我大致有这个数据结构:
我大致想将其展平成这种形式
但棘手的是:我想创建 40 个文本行的块,并且事务不能跨块拆分。即,如果我当前的块已经有 38 行,则上述事务必须进入下一个块。当前块需要用两个空行填充以完成 40:
在命令式/过程式编程中,这很容易。只需创建一个计数为 40 的倍数的全局迭代器变量,并在需要时插入空行(我提供了一个答案,展示了如何调整 XSLT/Xalan 以允许此类变量)。但是如何使用 XSLT 做到这一点?注意:考虑到我正在处理的数据的大小,恐怕递归是不可能的......但也许我错了
xslt - 在 Xalan XSLT 1.0 中,如何将变量传递给模板匹配?
我们在 Java 中使用 Xalan XSLT 1.0,我们希望将变量传递给模板匹配以避免在 XSL 文件中硬编码元素名称。样式表编译,但返回的日期错误。我们是否使用正确的语法?
可能的 XML 输入...
xml - 在 Xalan XSLT 1.0 中,需要一个函数来返回所有子元素名称
假设我有这个 XML ......
...我如何编写函数或使用内置函数来返回一个字符串,该字符串只是书的所有子元素名称的逗号分隔连接?像这样...
我需要这个来打印 csv 文件中的第一行标题
xml - 使用 local-name() 获取 XSLT 中的第一个子节点
假设我们有这个简单的 xml ...
我正在使用这个 xpath 来获取第一本书实例的元素。
退货
这很好用,但我必须使用 local-name() 让它工作。我尝试了以下方法,但这些都不起作用......
这会返回重复的作者和标题元素,不好,我只需要第一个孩子的
这不会返回任何东西
基本上,我想创建一个 CSV 文件,因此输出中的第一行将是一个标题,其中列出了书籍属性名称,后跟任意数据值。我只需要让标题部分工作。
java - 尝试使用变量元素名称在 XSLT 中打印出节点值
所以这是最近几天一直困扰我的问题。这应该相当容易,但是 XSLT 调试起来实在是太痛苦了。我们在 java 1.6 上使用 Xalan 1.0
输入 XML
我们需要将 XML 转换为每个 rfb2_item 的逗号分隔值列表,因此样式表总是迭代 rfb2_item 节点。我们在样式表中使用一个参数来控制 rfb2_item (valdate,fund_id,sec_id) 的哪些元素将被输出,以及以什么顺序输出,例如
特殊情况,如果 $outputElements 为 '*',只需按照元素在输入 xml 中出现的顺序输出元素
所以,我的问题是我们如何编写一个模板来根据 $outputElements 参数创建所需的输出?一个工作的例子会很棒......
java - 使用 xslt 将 xml 转换为 csv 文件
我遇到了 xsl:templates 和 xsl:call-template 标签的问题。也许这是缺乏理解,但这是我想要做的......
如果我有一个在“/*”上匹配的模板,并且我需要从需要其他文档上下文的封闭模板中调用其他模板,那么最有效的方法是什么?
我在调用 header 和 body 模板时使用 xsl:with-param 以便我可以覆盖封闭模板中的 match="/*" ,但是当我这样做时,输出会变得混乱。如果我注释掉对“header”模板的调用,则正文模板可以正常工作,反之亦然,但是从主模板调用两者,如您在上面的示例中所见,会使它们的行为异常。标题和正文模板需要选择文档的不同部分,这就是我选择使用 w0th-param 的原因,但我认为它甚至不起作用。
我应该改用应用模板吗?
java - 在 XSLT 中对记录进行分组时如何避免 O(n^2) 复杂性?
当我通过 XSL 将大量数据转换为 HTML 时,我经常遇到性能问题。这些数据通常只是几个大致这种形式的非常大的表:
在转换过程中,我想像这样对记录进行可视化分组
这是一个愚蠢的实现(集合来自http://exslt.org。实际的实现有点不同,这只是一个例子):
很容易看出这往往具有O(n^2)
复杂性。更糟糕的是,因为每条记录中都有很多字段。操作的数据可达几十MB,记录数可达5000条。最坏的情况下,每条记录都有自己的组和50个字段。更糟糕的是,还有另一个层次的分组可能,使得这O(n^3)
现在会有很多选择:
- 我可以找到一个涉及映射和嵌套数据结构的 Java 解决方案。但我想提高我的 XSLT 技能,所以这实际上是最后的选择。
- 我可能忘记了 Xerces/Xalan/Exslt 中的一个不错的功能,它可以更好地处理分组
- 我也许可以建立某种索引
/table/record/group
- 您可以向我证明,
<xsl:apply-templates/>
在这个用例中,该方法明显比该<xsl:for-each/>
方法快。
您认为如何O(n^2)
降低这种复杂性?
xslt - 无法让 Xalan 运行任何示例
我下载Xalan-Java Version 2.7.1
了,解压,然后PATH
为java和CLASSPATH
xalan设置:
(我也尝试为 xalan.jar、xercesImpl.jar、xml-apis.jar 设置类路径)
在测试一个简单的 Hello World 示例(或任何其他示例)时:
我总是得到这个:
问题是什么 ?有人有想法吗?
谢谢。