2013-09-23 3 views
0

Возможно ли преобразование массива на вход Xmls в единый Xml преобразованием XSLT?
В настоящее время я использую следующий код, который довольно прост.Groovy: преобразование XSLT в один ряд

Один Xml -> Один из XSLT -> Один выход Xml

Код

def w = new StringWriter() 
TransformerFactory.newInstance() 
        .newTransformer(new StreamSource(new StringReader(xslt))) 
        .transform(new StreamSource(new StringReader(xmlAsString)), 
           new StreamResult(w)) 
+0

Предполагая, что это файлы, см .: http://stackoverflow.com/questions/9210134/how-to-merge-multiple-xml-files-using-xsl –

+0

@tim_yates Спасибо Тим. Я видел это сообщение раньше. В моем случае входные данные xmls не являются файлами. –

+0

Тогда нет, я не думаю, что вы можете –

ответ

0

Концепция является то, что у вас есть один входной файл, один файл преобразования и один выходной файл , Я думаю, вы не можете преобразовать XSLT с несколькими входными файлами (вы могли бы объединить их раньше, но это не очень элегантно).

Однако вы можете получить доступ к как можно большему количеству документов в вашем стиле XSLT, используя функцию документа. Я бы сделал это так: Определите входной файл, который включает все документы, к которым вы хотите получить доступ, например.

<files> 
    <file> 
    <path>File1.xml</path> 
    </file> 

    <file> 
    <path>File2.xml</path> 
    </file> 
</files> 

Возьмите этот файл как входной файл и использовать функцию документа для доступа к ним:

<xsl:template match = "file"> 
    <xsl:copy-of select="document(./path)/..."/> 
</xsl:template> 

С помощью функции документа, вы можете получить доступ все входные файлы и применять преобразования к узлам, указанным там. Таким образом, вы можете обрабатывать произвольное количество входных файлов.

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