我需要一个简单的命令行程序来使用 XSL 样式表转换 XML [关闭]

Posted

技术标签:

【中文标题】我需要一个简单的命令行程序来使用 XSL 样式表转换 XML [关闭]【英文标题】:I need a simple command line program to transform XML using an XSL Stylesheet [closed] 【发布时间】:2011-02-01 08:54:41 【问题描述】:

我使用的是 OSX Snow Leopard (10.6.2),我可以安装任何我需要的东西。我最好喜欢 Python 或 Java 解决方案。我在 Google 上搜索并找到了很多关于编写自己的程序来执行此操作的信息,但这只是一个快速而肮脏的实验,所以我不想花很多时间编写一堆代码来执行此操作,我相信其他人已经这样做了。

现在这是题外话了,不要用这个问题来举例说明为什么你的推荐请求是题外话,事实并非如此。很抱歉,但在 4 年前我问这个问题的那天,我的 Google-Foo 让我失望了!

【问题讨论】:

【参考方案1】:

http://xml.apache.org/xalan-j/

【讨论】:

【参考方案2】:

使用lxml。它非常易于使用且速度非常快。它可以与 XPath 一起使用,并包含一个 XSLT transformer。

【讨论】:

【参考方案3】:

如果我正确地假设你想提供一个样式表和一个 XML 文档,那么 Xalan-J 有一个命令行特性可以用来做这件事:

http://xml.apache.org/xalan-j/commandline.html

可以通过以下方式调用:

java org.apache.xalan.xslt.Process -IN foo.xml -XSL foo.xsl -OUT foo.out

【讨论】:

【参考方案4】:

您见过XMLStarlet(一个XML 命令行工具集)吗?它做了很多与 XML 相关的查询转换,尤其是:

xml tr --help
XMLStarlet Toolkit: Transform XML document(s) using XSLT
Usage: xml tr [<options>] <xsl-file> -p|-s <name>=<value> [ <xml-file-or-uri> ... ]
where
   <xsl-file>      - main XSLT stylesheet for transformation
   <xml-file>      - input XML document file name (stdin is used if missing)
   <name>=<value>  - name and value of the parameter passed to XSLT processor
   -p              - parameter is XPATH expression ("'string'" to quote string)
   -s              - parameter is a string literal

更多文档here。

【讨论】:

【参考方案5】:

我推荐Saxon,它可以像这样从命令行运行:

java -jar /path/to/saxon.jar xmlfile xslfile

【讨论】:

添加 -o 参数以创建输出文件。 java -jar &lt;/path/to/saxon.jar&gt; &lt;xmlfile&gt; &lt;xslfile&gt; -o:&lt;/path/to/outputfile.fo&gt; 太棒了,saxon.jar 与 XSLT 2.0 一起使用!【参考方案6】:

你试过'xsltproc'吗?它可能已经安装了。

http://xmlsoft.org/XSLT/xsltproc2.html

【讨论】:

你是对的 OSX Snow Leopard 10.6.2 已经安装了这个,所以它得到了复选标记! xsltproc stylesheet file 输出到标准输出。太棒了。 很遗憾,据我所知,xsltproc 不适用于 XSLT 2.0。【参考方案7】:

多年来,我一直使用 Saxon 6.5 进行命令行转换。 (Java,XSLT 1)

如果本地解决方案不可用,这是一个很好的后备方案。

【讨论】:

【参考方案8】:

有关 com.sun.org.apache.xalan.internal.xsltc.cmdline.Transform 的另一种解决方案,请参见 this question。但我注意到命名空间与 xalan 处理相比有些奇怪。请注意,行为可能不符合标准。

你也知道,内部 java 类并不好依赖。

【讨论】:

以上是关于我需要一个简单的命令行程序来使用 XSL 样式表转换 XML [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

愚蠢且可能很简单的 XSL 问题

xsl 在带有样式表的 Multiple 的 xml 文档上创建

预处理 XSL 样式表 - 包括外部文档

命令行应用程序参数样式指南

gpx 文件的 XSL 样式表

XSL 选择样式文本和 td