2013-11-10 2 views
3

У меня есть папка со многими XML-файлами, и я хочу простое преобразование XSLT, которое может объединить все эти файлы в один и поместить все данные только в один узел с именем <files>...</files>. Меня не интересует заказ.Как объединить много XML-файлов с XSLT?

P.S. У меня нет индексного файла с именами всех файлов. Я искал «XSLT-файлы конкатенации XML» в google, но результаты всегда говорили об использовании функции document() и получении имен файлов из индексного файла. Я хотел бы увидеть решение этой проблемы, используя функцию collection(), если возможно, пожалуйста.

+0

Я использовал XInclude и документ раньше, чтобы достичь чего-то похожего. –

ответ

7

Процессоры XSLT 2.0 обычно позволяют это (вытаскивание файлов из каталога/папки) с помощью функции collection, но аргумент этой функции зависит от процессора. Использование Saxon 9 можно использовать

<xsl:param name="folder-url" select="'file:///C:/dir/folder'"/> 

<xsl:template name="main"> 
    <files> 
    <xsl:copy-of select="collection(concat($folder-url, '?select=*.xml'))"/> 
    </files> 
</xsl:template> 

См http://www.saxonica.com/documentation/index.html#!sourcedocs/collections подробности соответственно проверьте документацию вашего процессора XSLT 2.0.

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