Como eu “executo” um arquivo XSLT?

4

Recebi uma ótima resposta sobre a classificação de XML - preciso use XSLT . Mas como eu realmente faço isso? Qual software é necessário?

Qual comando ou aplicativo eu preciso iniciar para obter um arquivo de saída XML "convertido", já que tenho um arquivo XML e um arquivo XSLT como entrada?

Eu não tenho nenhum ambiente de desenvolvimento instalado; este é um computador de escritório regular com WinXP + IE7.

Atualização:
Com a ajuda deste site, criei um pequeno pacote que desejo compartilhar: XML-Sorter_v0.3 .zip

    
por Torben Gundtofte-Bruun 14.11.2011 / 08:54

3 respostas

6

Primeiro, decida se você deseja usar o XSLT 1.0 ou 2.0. O XSLT 2.0 é uma linguagem muito mais rica, e a única razão para preferir o XSLT 1.0 é que ele é suportado em uma ampla gama de ambientes (por exemplo, no navegador).

Em seguida, decida qual processador XSLT você deseja usar. Há uma ampla escolha para o XSLT 1.0; uma escolha bastante mais estreita para o XSLT 2.0.

Em seguida, procure na documentação desse processador XSLT para descobrir como executá-lo.

Dado que você parece estar bem com a execução da transformação da linha de comando do Windows, eu recomendaria o uso de Saxon-HE, que você pode obter de link . Você precisará instalar o Java e, em seguida, executar o Saxon. A documentação está aqui: link

Se você preferir uma interface gráfica simples, considere "Kernow para Saxon".

Se você quer um ambiente de desenvolvimento com um bom editor e depurador, você terá que pagar por isso, mas o Stylus Studio e o oXygen são ambos de bom valor, e ambos oferecem uma opção de mecanismos XSLT.

    
por 14.11.2011 / 13:33
2

Um processador XSLT como o Xalan-J para uma solução de linha de comando. Para um editor de GUI / depurador, você pode usar o Eclipse, um tutorial aqui .

Editar: uma solução totalmente baseada na Web encontrada aqui

    
por 14.11.2011 / 09:04
0

supondo que você tenha o powershell disponível e o arquivo XML e o arquivo 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

e aqui está uma essência, caso isso mude

link

    
por 18.01.2017 / 02:39

Tags