【问题标题】:Batch XSLT Transformation, find | xarg xsltproc批量 XSLT 转换,查找 | xarg xsltproc
【发布时间】:2022-04-09 21:15:53
【问题描述】:

我想递归地找到每个“foo.xml”文件,并在每个foo.xml 上应用 xslt bar.xsl 并保存原始 foo.xml。当我分别运行以下命令时,它们会起作用。

find . -name foo.xml
xsltproc -o foo.xml bar.xsl foo.xml

但是,当我通过管道传输它们时,foo.xml 没有任何反应。

find . -name foo.xml | xargs xsltproc -o foo.xml bar.xsl

【问题讨论】:

  • 上面应该把./bar.xsl应用到/some/directory/foo.xml并输出到./foo.xml。你是说这没有发生对吗?
  • @BroSlow 它应该输出到 /some/directory/foo.xml (替换原始)。但否则正确,它没有发生。
  • 如果将详细的-v 选项添加到xsltproc 会发生什么?
  • @BroSlow 详细输出看起来像是在应用转换;浏览每个模板并说出它在做什么。我认为这个问题与保存输出有关。
  • 奇怪,可能把-o的输出文件改成不存在的东西,看看有没有被创建。

标签: xslt find xargs


【解决方案1】:

警告这两个显然都会用问题中的转换覆盖 xml。

对于,你想做类似的事情

find . -name foo.xml -print0 | xargs -I {} -0 xsltproc -o {} transform.xsl {}

-exec

find . -name foo.xml -exec  xsltproc -o {} transform.xsl {} \;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    • 1970-01-01
    • 2011-06-01
    • 2023-03-18
    • 1970-01-01
    • 2012-06-08
    相关资源
    最近更新 更多