Как мне «запустить» XSLT-файл?

10864
Torben Gundtofte-Bruun

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

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

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

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

4

3 ответа на вопрос

6
Michael Kay

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

Установка пакета разработки кажется излишней, но я только что скачал файл saxon jar. Это, кажется, делает трюк - по крайней мере, он генерирует выходной файл! Является ли этот файл правильным, не является частью моего вопроса здесь. Спасибо!! Torben Gundtofte-Bruun 13 лет назад 0
Ссылка на документацию командной строки больше не действительна. fixer1234 9 лет назад 0
@ fixer1234: я сделал удар. (Wayback Machine - ХОРОШАЯ ВЕЩЬ.) G-Man 9 лет назад 1
2
TiCL

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

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

Ссылка на веб-решение была приятной правкой. Robino 9 лет назад 0
0
BozoJoe

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

Похожие вопросы