问题标签 [libxslt]

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 投票
1 回答
236 浏览

php - PHP:XSLT 处理器在 Windows WRT 到 Linux 中的不同行为

我有这个 php 片段:

它只是将 XSLT 应用于给定的 XML 文档。

当我将以下 XSLT 应用于同一个 XML 文档时,我得到了 Windows wrt 与 Linux PHP 版本不同的行为。

这是 php 和 libxml 版本的详细信息:

视窗:

Linux:

这是 XSLT 代码:

以及在 win 和 linux XSLT 中给出不同结果的 XML Doc:

Linux 输出 这是在 Linux 上应用 XSLT 实际产生的所需输出:

Windows 输出 这是在 Windows 上产生的错误结果:

问题在于 NaN 放置而不是相对索引:它肯定与 xsl:number 元素有关,但我不知道如何解决这个问题......


接受答案后编辑

通过将xsl:number count属性更改为*而不是node()xslt 模板可以在 Win 和 Linux 上按预期工作。

这是更新的代码:

0 投票
1 回答
717 浏览

xml - xmlXPathCompOpEval:未找到函数节点集

我正在为我的程序中的 XSLT 处理实现几个库(libxslt、libxml2、libexslt)。我包含了头文件和 .so 文件以将库链接到程序,并发现链接运行良好。

下面是在我的程序中使用库的一些函数来实现XSLT处理的代码,结果前两行运行良好,但在最后一行产生了错误。

//error
xmlXPathCompOpEval : function node-set not found
XPath error : Unregistered function

使用xsltproc(libxslt 的命令行版本)和我的计算机中相同的 XML(输入文件)和 XSL 文件(样式表文件),相同的 XSLT 处理工作得很好,但实现不起作用。

我知道节点集函数在 libexslt 中。但为什么它不起作用?是图书馆的链接问题吗?特别是 libexslt?还是配置?你们知道这个错误的任何解决方案吗?非常感谢您的帮助。谢谢你。

0 投票
1 回答
317 浏览

xml - 与 xsltproc 相比不同的 XSLT 处理结果

我正在使用 libxslt(加上 libxml2、libexslt)进行 XSLT 处理。
首先,我xsltproc使用如下所示的 XML 输入文件和 MS Office 的 XSL 文件 (APASixthEditionOfficeOnline.xsl) 进行了 XSLT 处理。您可以看到如下所示的 XML 输出。

XML 输入 (input.xml)

XSL 样式表 (APASixthEditionOfficeOnline.xsl)

XML 输出xsltproc

  • 我在命令行中编写了以下代码。

    xsltproc APASixthEditionOfficeOnline.xsl input.xml > output.xml

  • 我在 output.xml
    APA中得到了一个文本


同时,我尝试通过实现libxml2和libxslt的功能来制作自己的xsltproc。

我使用了相同的 APASixthEditionOfficeOnline.xsl 文件,但是没有解析 input.xml 而是在代码中生成了 XmlDocPtr。下面是我的代码。

我的代码

变量的预期结果xmlData是“APA”,但我得到了这个结果。

我的结果
<?xml version="1.0" encoding="us-ascii" standalone="yes"?>

我想要 xsltproc 的相同结果。
你能找出我的代码的问题吗?
这对您的评论非常有帮助。
谢谢你。

0 投票
1 回答
1196 浏览

xslt - Apache Xalan 的替代 XSLT 处理器

我目前在我的 Java 应用程序中使用 Apache Xalan XSLT 处理器,但我想使用一些支持使用扩展功能的替代解决方案。Xalan 似乎已经过时并且有问题。我知道 Saxonixa Saxon,但它是闭源的。是否有一些开源且运行良好的替代方案?

0 投票
2 回答
7663 浏览

nginx - ./configure: 错误:HTTP XSLT 模块需要 libxml2/libxslt 库

我最近将我的 mac-os 更新为 Mojave。我正在使用 Nginx,它正在我以前的操作系统上运行,但是在更新到 Mojave 之后,我无法启动我的 Nginx。所以我尝试再次安装它,首先它给了我c编译器错误,所以我下载了Xcode命令行工具,它就消失了。现在它给了我找不到 libxml2/libxslt 库。我尝试使用 brew 安装它,但仍然遇到相同的错误。我不确定出了什么问题。

我已经使用 brew install 下载了 libxml2 和 libxslt。

我的配置脚本。

错误 :

你可以看到它能够找到 OpenSSL、zlib 但不能找到 libxslt。请有人帮我解决这个问题。

0 投票
1 回答
39 浏览

c - C 程序使用 XSLT 从字符串 XML 中过滤 anyURI 类型的元素

我有一个 XML 字符串,我想在这个 XML 上应用 XSLT 字符串来过滤 anyURI 类型的元素。

我有兴趣使用 libxslt。但它会转换文件中存在的 xml。我想转换 xml字符串

如何编写一个 C 程序来转换这个 xml 字符串?

0 投票
0 回答
51 浏览

xml - Nokogiri 1.10.5 及更高版本对 ONIX XSD 进行误报验证

Nokogiri 的版本 1.10.5 及更高版本针对 ONIX v2.1 和 v3 XSD 产生与版本 1.10.4 不同的验证错误,并且我在该版本中找不到任何提交和更改的依赖项(libxml2-2.9.10libxslt 1.1 .34 ) 这将导致这种行为变化。

我创建了一个无效 ONIX XML 的小例子(ff不是允许的列表条目 <ProductForm>ff</ProductForm>):

并为它创建了一个使用 ONIX XSD 的测试:

指定版本 1.10.4 时测试通过,而在 1.10.5 及更高版本中测试失败,因为它忽略返回以下错误:

"26:0: ERROR: Element 'ProductForm': 'ff' is not a valid value of the atomic type 'List7'."

这是一个包含测试装置的 zip 文件,关于 gem 存储库中提出的问题,您可以使用它运行$ ruby -Ilib:test 1.10.4/test_case.rb$ ruby -Ilib:test 1.10.5/test_case.rb

0 投票
1 回答
592 浏览

php - XSLTProcessor::transformToUri():内存分配失败:达到任意 MAX_URI_LENGTH 限制

我有一些 XML 文件需要在 Html 中“转换”并显示在屏幕上。

我开发了一个简单的脚本,它几乎在所有时间都可以使用,使用DOMDocumentand XSLTProcessor.

问题是有时它会给出这个错误,而生成的 html 只是完整内容的一部分:

XSLTProcessor::transformToUri(): Memory allocation failed : reaching arbitrary MAX_URI_LENGTH limit in /var/www/test/index.php on line 14

这是我的脚本的工作副本,它对相同的文件给出了相同的错误。

我试图将输出保存到文件中,但我仍然遇到同样的错误,所以php://output应该不是问题。我该如何解决这个问题?

编辑: 看起来问题出在以下代码中。事实上,如果我删除以下行,我将不再看到问题。我希望这有帮助:

附件本身是一个 base64 pdf 文件(在本例中是一个 ~1mb 字符串,但可能更多)

编辑 2:如果我尝试使用命令行xsltproc命令生成 html,会发生这种情况:

编辑 3:我尝试用 替换transformToURItransformToXML没有结果。libxml_get_errors()也没有显示任何结果。

0 投票
1 回答
77 浏览

xml - 禁用输出转义在 MacOS Catalina 上被 libxslt 库破坏

升级到 MacOS Catalina 并链接到 10.15 SDK 中包含的 libxslt 和 libxml2 后,一个奇怪的问题是,所有的使用disable-output-escaping="yes"都被破坏了并且无论如何都会转义输出。来自各种 XSLT 工作表的几个示例:

节点中LBL_CM_3有一些 HTML,例如cm<sup>3</sup>. 当我的代码使用非常直接的 API 处理时,这两种情况都被转义(意外结果)。这是一个精简的版本,省略了错误检查和清理:

但是,如果我使用 处理相同的输入和样式表/usr/bin/xsltproc,则不会转义输出(预期结果)。我们都链接系统上的同一个库:

系统xsltproc版本信息:

10.15 SDKusr/include/libxml/xmlversion.h显示相同的版本:

这与之前使用 MacOS Sierra SDK 的预期一样工作,具有相同的调用代码和相同的 XSLT 工作表。XSLT 处理的所有其余部分似乎都按预期工作,只是disable-output-escaping="yes"被忽略了。

0 投票
0 回答
56 浏览

c - 创建 FILE 时出现分段错误

我尝试将带有 XSLT 的 XML 文件转换为 HTML。

它可以工作,但 HTML 代码显示在控制台中。我想将它保存到一个文件中,但是当我尝试创建文件“result.html”并将其放入 xsltSaveResultToFile(ptrFile, res, cur) 时出现错误“分段错误”。我该怎么做才能修复它?