bash 内的 XSLT 转换将 XPATH 值传递给输出文件名

XSLT Transformation within bash pass XPATH value to output file name

我正在进行批处理 xsl 转换,并希望使用我的样式表中的参数来形成输出文件名,但我不太确定该怎么做,它应该类似于:

$output = Join-Path $mypath {{XPATH}} $file.Name
java -cp $saxonpath net.sf.saxon.Transform -t -s:$file -xsl:$xsltpath -o:$output

{{XPATH}} 指的是我的 XPATH,简单如 count(//error)

希望有人能帮助我 that.z 谢谢!

而不是用 -o:$output 定义输出 您可以将输出路径作为参数传递给转换并使用 xsl:result-document 创建输出文件。

类似的东西:

$output = Join-Path $mypath $file.Name
java -cp $saxonpath net.sf.saxon.Transform -t -s:$file -xsl:$xsltpath -mypath=$output

<xsl:stylesheet>
  ...
  <xsl:param name="mypath"/>
  ...
  <xsl:result-document href="concat($mypath,count(//error))" method="xml">
    ...
  </xsl:result-document>
</xsl:stylesheet>

根据您的系统,您需要注意路径中使用的分隔符。

如果您想在 运行 XSLT 之前进行 XPath 评估以计算例如该计数然后使用例如

调用 XQuery 处理器
java -cp $saxonpath net.sf.saxon.Query -qs:'count(//error)' -s:$file '!method=text'

例如将其存储在变量中

count=`java -cp $saxonpath net.sf.saxon.Query -qs:'count(//*)' -s:$file '!method=text'`

或者,在您的原始版本中,可能

$output = Join-Path $mypath `java -cp $saxonpath net.sf.saxon.Query -qs:'count(//*)' -s:$file '!method=text'` $file.Name