如何“运行” XSLT 文件?

如何“运行” XSLT 文件?

我收到了一个关于对 XML 进行排序的很好的答案 - 我需要使用 XSLT。但我该怎么做呢?需要什么软件?

我需要启动什么命令或应用程序假设我有一个 XML 文件和一个 XSLT 文件作为输入,如何获取“转换后的” XML 输出文件?

我没有安装任何开发环境,是一台普通的办公电脑,WinXP+IE7。

更新:
在此网站的帮助下,我创建了一个想要分享的小包:XML-Sorter_v0.3.zip

答案1

首先决定是否要使用 XSLT 1.0 或 2.0。XSLT 2.0 是一种功能更丰富的语言,选择 XSLT 1.0 的唯一原因是它在更广泛的环境中得到支持(例如,在浏览器中)。

然后决定要使用哪种 XSLT 处理器。XSLT 1.0 的选择范围很广;XSLT 2.0 的选择范围则比较狭窄。

然后查看该 XSLT 处理器的文档以了解如何运行它。

鉴于您似乎可以从 Windows 命令行运行转换,我建议您使用 Saxon-HE,您可以从http://saxon.sf.net/。您需要安装 Java,然后才能运行 Saxon。文档在这里:http://www.saxonica.com/documentation/index.html#!using-xsl/commandline

如果您更喜欢简单的 GUI 界面,请考虑“Kernow for Saxon”。

如果您想要一个具有良好编辑器和调试器的开发环境,您将需要为此付费,但 Stylus Studio 和 oXygen 都具有很好的价值,并且都为您提供了 XSLT 引擎的选择。

答案2

XSLT 处理器沙兰命令行解决方案。对于 GUI 编辑器/调试器,您可以使用 Eclipse,这是一个教程这里

编辑:完全基于 Web 的解决方案找到这里

答案3

假设您有可用的 powershell、XML 文件和 XSLT 文件

<#
.SYNOPSIS
    Transform an xml file
.DESCRIPTION
    load a XML file and load a XSLT file, then transform the XML using the XSLT and output to the console
.PARAMETER $xsltfilename
    The path to the XSLT file
.PARAMETER $filename
    The path to the XML file to be transformed
.EXAMPLE
    C:\PS> 
    .\tranform.ps1 .\rgs_broke.xml .\fix_escalation.xslt > rgs_fixed.xml
.NOTES
    Author: Alex McCool
    Date:   Jan 17, 2017
#>

param(
[Parameter(Mandatory=$true)]
[string]$xsltfilename, 
[Parameter(Mandatory=$true)]
[string]$filename
)


function Load-Xml
{
param([string]$filename)

$content = Get-Content $filename

$stream = new-object System.IO.MemoryStream

$writer = new-object System.IO.StreamWriter($stream)
$writer.Write("$content")
$writer.Flush()
$stream.position = 0

$xml = new-object System.Xml.XmlTextReader($stream)

return $xml
}

function Load-Xslt
{
param([string]$filename)

$content = Get-Content $filename

$stream = new-object System.IO.MemoryStream
$writer = new-object System.IO.StreamWriter($stream)
$writer.Write("$content")
$writer.Flush()
$stream.position = 0

$reader = [System.Xml.XmlReader]::create($stream)
$xslt = New-Object System.Xml.Xsl.XslCompiledTransform
$xslt.Load($reader)

return $xslt
}


$xml = Load-Xml($filename)
$xslt = Load-Xslt($xsltfilename)

$output = New-Object System.IO.MemoryStream
$reader = new-object System.IO.StreamReader($output)


$arglist = new-object System.Xml.Xsl.XsltArgumentList
$xslt.Transform($xml, $arglist, $output)

$output.position = 0
$transformed = [string]$reader.ReadToEnd()
$reader.Close()

write-output $transformed

以下是要点,以防万一

https://gist.github.com/amccool/560b533f1ea94560e0dae6367c2b75ce

相关内容