我想将XML文档转换作为一次性命令和独立脚本编写,就像我使用Unix工具(如grep
,sed
,awk
等)来处理文本文件一样。这些脚本必须在Linux和Windows之间可移植(使用Cygwin即可)。'选择和转换'XML转换语言?
如果你已经定期做这个,你使用什么解决方案?你能推荐它吗? 。
(一些背景资料:
现在,我想从一组XML文档中删除某种元素的 我经常需要做这种系统的XML文档的改写; 有时候,在(在命令行上,我用了很多); 更多的时候,我想要构建更复杂的转换,将它们保存到文件中,然后从文件中执行它们
所以我想要一个XML转换脚本语言可以在命令行上使用。 类似sed
或针对XML文档的:其命令将指定一个选择器,用于选择输入文档中的节点,以及指定如何处理每个选定节点上的文档的操作。
通常我会用XML::LibXML写出一个Perl脚本。 这工作,但它确实不适合该法案:
- 语法:代码过于冗长要在命令行上
- 语义上使用:“选择与改造”模式不给定,我必须明确地编程,这种行为在我的代码,因此它是不必要很难让读者明白,那就是究竟发生什么事
- 语法/语义:读或写这个代码需要在语言一般流畅
The对于使用任何其他通用编程语言也是如此。
嗯,这是XSLT的发明,对不对?
也许; I can use XSLT,但它确实遭受同样的缺点。
更好的匹配是xmlstarlet:它确实就像sed
,因为它支持我想要的类型的简短而神秘的命令。但是,就像sed一样,从这些命令组成的大型程序也很难理解。
另一个想法是使用jQuery DOM manipulation:
- 更强大的选择比的XPath
- 优雅和紧凑的方式相结合的选择和操作
- 内置任意JavaScript函数的可扩展性(但没有按” t 要求对于简单情况下的很多JavaScript知识)
好,但我你要用一个工具,它允许我用这样的表达作为独立的脚本:
jqmanip --html '$(a:parent).detach()' foo.html > bar.html
jqmanip convert-tables-to-divs.jqm foo.html > bar.html
这是排序实用程序我在找的)
更新:我刚刚发现了另一种这样的语言:[XDT](http://msdn.microsoft.com/en-us/library/dd465326.aspx)。 – reinierpost