我需要一个简单的命令行程序来使用 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 </path/to/saxon.jar> <xmlfile> <xslfile> -o:</path/to/outputfile.fo>
太棒了,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 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章