Объединение нескольких файлов XML в один файл XML с помощью XSLT - PullRequest
0 голосов
/ 24 сентября 2019

Я пытаюсь отправить местоположение XML как параметр из Python в XSLT и пытаюсь объединить его с почтовым файлом XML.Ниже приведен код используемого дерева элементов

import os
import lxml.etree as ET

inputpath = r"C:\Users\[0].xml"
xsltfile = r"C:\Users\styleSheet.xsl"
outpath = r"C:\Users\Output.xml"

xml = ET.parse(inputpath)
xslt = ET.parse(xsltfile)

transform = ET.XSLT(xslt)
xmlLocation = ET.XSLT.strparam(r"C:\Users\Image.xml")
newdom = transform(xml, xml_path=xmlLocation)

tree_out = ET.tostring(newdom, encoding='UTF-8', pretty_print=True,  xml_declaration=True)
print(tree_out)

xmlfile = open(outpath ,'wb')
xmlfile.write(tree_out)
xmlfile.close()

Ниже приведен основной файл XML

[0] .xml

<?xml version="1.0" encoding="UTF-8"?>
<ps:pt xmlns:ps="http://schemas.microsoft.com/windows/2003/psfrk" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1" xmlns:ns0000="http://schemas.mta.com/1" xmlns:psk="http://schemas.microsoft.com/windows/2003/08">
    <ps:pi name="ns0000:PDS">
        <ps:Value xsi:type="xsd:string">
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE0AYQBuAHUAYQBsAAAAAAAAAAAAAAAAAAAAAAAAAAAA</ps:Value>
    </ps:pi>
    <ps:pi name="psk:JCAD">
        <ps:Value xsi:type="xsd:integer">1</ps:Value>
    </ps:pi>
</ps:pt>

styleSheet.xsl

<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ps="http://schemas.microsoft.com/windows/2003/psfrk" version="1.0"> 
<xsl:param name="xml_path" /> 
    <xsl:template match="/">
        <xsl:copy>
            <xsl:copy-of select="ps:pt"/>
            <xsl:copy-of select="document($xml_path)/*"/>
        </xsl:copy>
    </xsl:template> 

</xsl:transform>

Image.xml

<?xml version="1.0" encoding="UTF-8"?>
<ps:pt xmlns:ps="http://schemas.microsoft.com/windows/2003/psfrk" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1" xmlns:ns0000="http://schemas.mta.com/1" xmlns:psk="http://schemas.microsoft.com/windows/2003/08">
    <ps:f name="psk:PW">
        <ps:Option name="ns0000:Image">
            <ps:sp name="ns0000:File">
                <ps:pr name="ns0000:PWI"/>
            </ps:sp>
        </ps:f>
    </ps:Option>
</ps:pt>

Обязательный выход: Output.xml

<?xml version="1.0" encoding="UTF-8"?>
<ps:pt xmlns:ps="http://schemas.microsoft.com/windows/2003/psfrk" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1" xmlns:ns0000="http://schemas.mta.com/1" xmlns:psk="http://schemas.microsoft.com/windows/2003/08">
    <ps:pi name="ns0000:PDS">
        <ps:Value xsi:type="xsd:string">
        AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE0AYQBuAHUAYQBsAAAAAAAAAAAAAAAAAAAAAAAAAAAA</ps:Value>
    </ps:pi>
    <ps:pi name="psk:JCAD">
        <ps:Value xsi:type="xsd:integer">1</ps:Value>
    </ps:pi>
    <ps:f name="psk:PW">
        <ps:Option name="ns0000:Image">
            <ps:sp name="ns0000:File">
                <ps:pr name="ns0000:PWI"/>
            </ps:sp>
        </ps:f>
    </ps:Option>
</ps:pt>

Когда я запускаю этот код.Я вижу только [0] .xml в выводе.Это НЕ объединение как XML, что и где я сделал неправильно.Это что-то проблема с XSLT?

...