问题标签 [xproc]
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.
xml - 使用 XProc 进行 XML 流式传输
我正在使用xproc、XML 管道语言和http://xmlcalabash.com/。我想找到一个流式传输大型 xml 文档的示例。例如,给定以下巨大的xml 文档:
我应该如何继续循环(流式传输)x-> N 文档,例如
并用 xslt 处理每个文档?xproc 可以吗?
xslt - 具有可变数量源文件的 XSLT 工作流
我有一堆具有固定的、基于国家/地区的命名模式的 XML 文件:、、、report_en.xml
等report_de.xml
。report_fr.xml
现在我想编写一个 XSLT 样式表,通过document()
XPath 函数读取这些文件中的每一个,提取一些值并生成一个 XML 文件带摘要。我的问题是:如何在不知道要处理的文件的确切名称的情况下迭代源文件?
目前我正计划生成一个包含所有文件名的辅助 XML 文件,并在我的样式表中使用辅助 XML 文件进行迭代。文件列表将使用一个小的 PHP 或 bash 脚本生成。有更好的选择吗?
我知道XProc,但目前对我来说不是一个选择。也许有人可以发布 XProc 解决方案。该解决方案最好包括工作流程步骤,其中报告以 HTML 格式下载并整理:)
我将使用 Saxon 作为我的 XSLT 处理器,所以如果有我可以使用的特定于 Saxon 的扩展,这些也可以。
xml - 如何简化这个 xproc 管道?
我刚刚开始研究 XProc(使用Calabash)。我有一系列 XSLT 转换,我想将其应用于单个输入文档以生成单个输出文档。我以前使用一个简单的 Python 脚本来驱动转换,但看起来 XProc 可能是一个不错的选择。
下面的管道似乎对我有用。它本质上只是需要按正确顺序应用的 XSLT 转换的列表。问题是,这似乎是多余的。我希望有某种方法可以减少这种情况,但是(到目前为止)我自己无法弄清楚。
xml - 执行 XPROC
我对 XSLT 和 XPROC 的东西非常陌生。现在我已经编写了我的示例 XPROC,就像每个初学者一样,我也是从Hello World开始的。
你好.xpl
现在我的问题可能很傻,我想知道如何执行它并查看输出?
谢谢。
xproc - XPROC - 在辅助端口中生成文件
我的要求是在辅助端口中生成一个 XML 文件和几个 HTML 文件。我在 XProc 中配置了几个步骤。
这是示例代码:
这里的问题是 HTML 文件生成正确。并且生成了 XML 文件,但我无法查看 XML 内容。相反,它以 HTML 格式显示所有内容。这是因为<p:store>
上面的代码片段。
你怎么有两个<p:store>
步骤?(一个用于 HTML,另一个用于 XML)
xml - p:variable :: 阴影是什么意思,我可以为先前声明的 p:variable 重新分配一个新值吗
我还没试过。
我们可以在管道中的其他任何地方更新 p:variable 的值,即在某个步骤开始时的有效声明之后?如果不是那为什么?如果我真的需要这样做或至少模拟它,那么最好的方法是什么。
xml - XProc: multiple XSLT transformation with intermediate files
I need to do several XSLT transformations with intermediate XML files. (I need the files, the real case is a bit more tricky as a later step loads intermediate files)
I'd like to create an XProc pipleline. I have tried to write the following code, but this gives me an error:
(where SCHWERWIEGEND means something like FATAL) So obviously the file intermediate.xml
has not been written.
This is the xpl
-document that I have used:
Just for the sake of completeness: these are the transformation files:
source.xml:
first.xsl:
final.xsl:
Here is a note on the real application (the above is a simplification, of course).
- First step: convert the source into something more suitable for my processing. Output:
companies.xml
- Take the output from step 1 and create an index file (
index.xml
) from that. The index file must be editable manually. - The third step is to merge the files created by step 1 and 2 and create a final xml (
final.xml
)
The index file must be written to disk and I must be able to run the last step by itself (that's a different problem - I'd write a different pipeline for that)
The output of companies.xml
(step 1) is optional, it could be saved in memory (but it might get large).
spring-mvc - 如何从Java程序调用calabash xml
我尝试使用 spring 和 xslt 建立一个基于 Web 的应用程序。因为我总是以流水线方式使用 xslt,所以我想使用葫芦。是否有可能从 Java 调用葫芦?我阅读了http://xmlcalabash.com上的文档,但只有一个描述如何从命令行使用它。我也厌倦了在 githup 上找到一些 javadoc,但没有成功。显然,有带有 main() 方法的 Main 类,我可以将命令行参数作为字符串数组提供......
我想知道是否有更好的方法来做到这一点。
xml - 如果结果文档已经存在,则跳过转换
我只想通过 XProc 执行我的转换,而不是使用批处理/shell 脚本。
我的转换过程是输入和输出文档的简单串联 - 所以转换 1 的输出是转换 2 的输入。转换 2 的输出是转换 3 的输入,依此类推。
此代码描述了一个示例转换:
它起作用了,另外我得到了所有临时结果文档来仔细检查每个 XSLT 脚本的功能。处理复杂的多重转换会减慢速度——因为 XProc 脚本总是从头开始。但我只想在转换 4 处修复一些东西。通常(使用批处理/shell)我只是删除转换 4 的输出,修复 XSLT 脚本并代表 if-test 跳过所有先前的转换(例如,如果 output3.xml 存在转到转换4)。如何在 XProc 脚本中执行此操作?
XPath 模式是:not(doc-available(‘output1.xml’))
- 与 xsl 结合使用:如果它在 XSLT 中工作。我尝试使用 ap:choose - 但我没有 p:otherwise 的输出管道,并且该过程总是失败。所以我猜使用 p:choose 不会提出所需的解决方案?
有任何想法吗?
亲切的问候奥利弗
xproc - 转换输出非 XML 文档
我只想将一个输入文档(它只是一个文件引用列表)转换为几个输出文档。
这有效:
XSL:
问题:输出文档不包含根元素 - 我需要输出框架,稍后在此过程中创建框架文件并包含所有输出文档。
错误信息:
09.11.2012 13:06:27 com.xmlcalabash.util.DefaultXProcMessageListener 错误 SCHWERWIEGEND: err:XD0001:XD0001 09.11.2012 13:06:27 com.xmlcalabash.drivers.Main 错误 SCHWERWIEGEND:如果非XML 资源在步骤输出中产生或在步骤输入中到达。
当然它不是 XML - 我试图代表 @method (method=text) 修复它,但它没有奏效。
有任何想法吗?我搜索了适用的解决方案,但我只找到一个条目说这在此刻是不可能的......希望不是