4

Я получил отличный ответ о сортировке XML - мне нужно использовать XSLT. Но как мне на самом деле это сделать? Какое программное обеспечение требуется?

Какую команду или приложение мне нужно начать, чтобы получить "преобразованный" выходной XML-файл, учитывая, что у меня есть XML-файл и XSLT-файл в качестве входных данных?

У меня не установлено ни одной среды разработки; это обычный офисный компьютер с WinXP+IE7.

Обновить:
С помощью этого сайта я создал небольшой пакет, которым хочу поделиться: XML-Sorter_v0.3.zip

3 ответа3

6

Сначала решите, хотите ли вы использовать 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

Если вы предпочитаете простой графический интерфейс, рассмотрите "Kernow для Saxon".

Если вам нужна среда разработки с хорошим редактором и отладчиком, вам придется заплатить за нее, но Stylus Studio и oXygen - это хорошая цена, и оба предоставляют вам выбор XSLT-движков.

2

XSLT-процессор, такой как Xalan-J, для решения командной строки. Для редактора / отладчика GUI вы можете использовать Eclipse, учебник здесь.

Изменить: полностью веб-решение найдено здесь

0

при условии, что у вас есть 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .