2013-07-23 1 views
0

У меня есть папка из нескольких сотен XML-файлов, которые я бы хотел преобразовать в папку файлов HTML. Я создал XSLT, который работает в тесте XSLT w3schools.com, но я не уверен, как применить эту таблицу стилей к сотням XML-документов. Мой XML выглядит следующим образом (и только узлы я заинтересован в название, автор, и текст):Преобразование папки файлов XML в папку HTML-файлов

<?xml version='1.0' encoding='utf-8'?> 
<song xmlns="http://openlyrics.info/namespace/2009/song" version="0.8" createdIn="OpenLP  2.0.1" modifiedIn="OpenLP 2.0.1" modifiedDate="2012-03-14T02:21:52"> 
    <properties> 
    <titles> 
     <title>Amazing Grace</title> 
    </titles> 
    <authors> 
     <author>John Newton</author> 
    </authors> 
    </properties> 
    <lyrics> 
    <verse name="v1"> 
     <lines>Amazing grace, how sweet the sound<br/>That saved a wretch like me<br/>I once was lost, but now am found<br/>Was blind but now I see</lines> 
    </verse> 

Пара вопросов по этому поводу:

1) Может ли быть лучше использовать XQuery так как меня интересует только извлечение нескольких строк на XML-файл?

2) Независимо от XSLT/XQuery, как я могу реализовать решение, которое преобразует папку файлов XML (без ручного редактирования каждого из них, чтобы вызвать таблицу стилей XSL)? Я запускаю OS X 10.8.4.

Заранее спасибо.

+0

Вы должны использоваться набор() функцию xslt2.0 применить таблицу стилей accross сотни xml Документы. Для более полного понимания вы можете следовать http://www.xmlplease.com/collection. Я уверен в HTML, что вы хотите преобразовать. Вы просто хотите переименовать xml в html extention или хотите создать несколько html-файлов в зависимости от ваших входных файлов XML. –

+0

Я бы использовал XSLT 2.0 и функцию 'collection()', подобную Navin. Это может вызвать проблемы с потреблением памяти. Вы можете решить эту проблему, используя функцию расширения Saxon 'saxon: discard-document'. Я могу добавить пример, если это поможет. –

ответ

0

Просто напишите свой собственный сценарий оболочки, используя команду xsltproc. Это то, что я успешно использовал для пакетной обработки XSLT.

Или просто открыть оболочку, cd в папку с файлами XML, а затем введите следующие две команды:

mkdir results 
xsltproc -o results/ path/to/stylesheet.xslt *.xml 
0
  1. Я думаю, что XQuery было бы удобнее, если у вас все ваши XML в базе данных, но в файловой системе XSLT может быть проще.

  2. Я бы просто использовал Saxon-PE и вызывать его из сценария оболочки. Вы также можете использовать Automator.

Смежные вопросы