Удаление ненужных тегов <ns0: Messages> и <ns0: Message1> из плохо сформированного вывода XML - PullRequest
0 голосов
/ 03 ноября 2018

Не могли бы вы предоставить мне логику XSLT (подойдет либо XSLT 1.0, либо версия XSLT 2.0), чтобы преобразовать приведенный ниже не правильно сформированный ввод XML в правильно сформированные данные XML.

Ввод:

<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <ns0:Message1>
        <ns0:invoiceOrder xmlns:ns0="http://cts.com"
                   type="ABCD"
                   businessDivision="X0"
                   salesOrganization="XYZ10"
                   Channel="Y0">
            <ns0:references>
                <ns0:key type="Source System">ABC</ns0:key>
                <ns0:relationship scheme="Customer" schemeAgency="APAC" role="Sell to">703760000</ns0:relationship>
                <ns0:document type="Purchase Order">AB123</ns0:document>
            </ns0:references>
            <ns0:notes>
                <ns0:note type="XY67" language="EN">package1</ns0:note>
            </ns0:notes>
            <ns0:orderLines>
                <ns0:orderLine>
                    <ns0:identifiers>
                        <ns0:identifier scheme="Item" schemeAgency="ABC">100411</ns0:identifier>
                    </ns0:identifiers>
                    <ns0:amounts>
                        <ns0:amount type="credit Amount">274.50</ns0:amount>
                    </ns0:amounts>
                </ns0:orderLine>
                <ns0:orderLine>
                    <ns0:identifiers>
                        <ns0:identifier scheme="Item" schemeAgency="ABC">140072</ns0:identifier>
                    </ns0:identifiers>
                    <ns0:amounts>
                        <ns0:amount type="credit Amount">58.41</ns0:amount>
                    </ns0:amounts>
                </ns0:orderLine>
            </ns0:orderLines>
            <ns0:terms>
                <ns0:term type="Reason Code">D19</ns0:term>
                <ns0:term type="Payment Terms">Y000</ns0:term>
            </ns0:terms>
            <ns0:billingInfo>
                <ns0:paymentMethod/>
            </ns0:billingInfo>
            <ns0:flags>
                <ns0:flag type="1099 Payment Flag">Y</ns0:flag>
            </ns0:flags>
            <ns0:dates>
                <ns0:date type="Proposed Invoice Date">2018-11-02</ns0:date>
            </ns0:dates>
        </ns0:invoiceOrder>
    </ns0:Message1>
</ns0:Messages>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <ns0:Message1>
        <ns0:invoiceOrder xmlns:ns0="http://cts.com"
                   type="ABCD"
                   businessDivision="X0"
                   salesOrganization="ABC10"
                   Channel="Y0">
            <ns0:references>
                <ns0:key type="Source System">ABC</ns0:key>
                <ns0:relationship scheme="Customer" schemeAgency="APAC" role="Sell to">702390000</ns0:relationship>
                <ns0:document type="Purchase Order">AB123</ns0:document>
            </ns0:references>
            <ns0:notes>
                <ns0:note type="XY34" language="EN">package2</ns0:note>
            </ns0:notes>
            <ns0:orderLines>
                <ns0:orderLine>
                    <ns0:identifiers>
                        <ns0:identifier scheme="Item" schemeAgency="ABC">100411</ns0:identifier>
                    </ns0:identifiers>
                    <ns0:amounts>
                        <ns0:amount type="Rebate Amount">76.25</ns0:amount>
                    </ns0:amounts>
                </ns0:orderLine>
                <ns0:orderLine>
                    <ns0:identifiers>
                        <ns0:identifier scheme="Item" schemeAgency="ABC">140072</ns0:identifier>
                    </ns0:identifiers>
                    <ns0:amounts>
                        <ns0:amount type="Rebate Amount">9.74</ns0:amount>
                    </ns0:amounts>
                </ns0:orderLine>
            </ns0:orderLines>
            <ns0:terms>
                <ns0:term type="Reason Code">Y19</ns0:term>
                <ns0:term type="Payment Terms">Y000</ns0:term>
            </ns0:terms>
            <ns0:billingInfo>
                <ns0:paymentMethod/>
            </ns0:billingInfo>
            <ns0:flags>
                <ns0:flag type="1099 Payment Flag">Y</ns0:flag>
            </ns0:flags>
            <ns0:dates>
                <ns0:date type="Proposed Invoice Date">2018-11-02</ns0:date>
            </ns0:dates>
        </ns0:invoiceOrder>
    </ns0:Message1>
</ns0:Messages>

Ожидаемый результат:

<?xml version="1.0" encoding="UTF-8"?>
<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <ns0:Message1>
        <ns0:invoiceOrder xmlns:ns0="http://cts.com"
                   type="ABCD"
                   businessDivision="X0"
                   salesOrganization="XYZ10"
                   Channel="Y0">
            <ns0:references>
                <ns0:key type="Source System">ABC</ns0:key>
                <ns0:relationship scheme="Customer" schemeAgency="APAC" role="Sell to">703760000</ns0:relationship>
                <ns0:document type="Purchase Order">AB123</ns0:document>
            </ns0:references>
            <ns0:notes>
                <ns0:note type="XY67" language="EN">package1</ns0:note>
            </ns0:notes>
            <ns0:orderLines>
                <ns0:orderLine>
                    <ns0:identifiers>
                        <ns0:identifier scheme="Item" schemeAgency="ABC">100411</ns0:identifier>
                    </ns0:identifiers>
                    <ns0:amounts>
                        <ns0:amount type="credit Amount">274.50</ns0:amount>
                    </ns0:amounts>
                </ns0:orderLine>
                <ns0:orderLine>
                    <ns0:identifiers>
                        <ns0:identifier scheme="Item" schemeAgency="ABC">140072</ns0:identifier>
                    </ns0:identifiers>
                    <ns0:amounts>
                        <ns0:amount type="credit Amount">58.41</ns0:amount>
                    </ns0:amounts>
                </ns0:orderLine>
            </ns0:orderLines>
            <ns0:terms>
                <ns0:term type="Reason Code">D19</ns0:term>
                <ns0:term type="Payment Terms">Y000</ns0:term>
            </ns0:terms>
            <ns0:billingInfo>
                <ns0:paymentMethod/>
            </ns0:billingInfo>
            <ns0:flags>
                <ns0:flag type="1099 Payment Flag">Y</ns0:flag>
            </ns0:flags>
            <ns0:dates>
                <ns0:date type="Proposed Invoice Date">2018-11-02</ns0:date>
            </ns0:dates>
        </ns0:invoiceOrder>
        <ns0:invoiceOrder xmlns:ns0="http://cts.com"
                   type="ABCD"
                   businessDivision="X0"
                   salesOrganization="ABC10"
                   Channel="Y0">
            <ns0:references>
                <ns0:key type="Source System">ABC</ns0:key>
                <ns0:relationship scheme="Customer" schemeAgency="APAC" role="Sell to">702390000</ns0:relationship>
                <ns0:document type="Purchase Order">AB123</ns0:document>
            </ns0:references>
            <ns0:notes>
                <ns0:note type="XY34" language="EN">package2</ns0:note>
            </ns0:notes>
            <ns0:orderLines>
                <ns0:orderLine>
                    <ns0:identifiers>
                        <ns0:identifier scheme="Item" schemeAgency="ABC">100411</ns0:identifier>
                    </ns0:identifiers>
                    <ns0:amounts>
                        <ns0:amount type="Rebate Amount">76.25</ns0:amount>
                    </ns0:amounts>
                </ns0:orderLine>
                <ns0:orderLine>
                    <ns0:identifiers>
                        <ns0:identifier scheme="Item" schemeAgency="ABC">140072</ns0:identifier>
                    </ns0:identifiers>
                    <ns0:amounts>
                        <ns0:amount type="Rebate Amount">9.74</ns0:amount>
                    </ns0:amounts>
                </ns0:orderLine>
            </ns0:orderLines>
            <ns0:terms>
                <ns0:term type="Reason Code">Y19</ns0:term>
                <ns0:term type="Payment Terms">Y000</ns0:term>
            </ns0:terms>
            <ns0:billingInfo>
                <ns0:paymentMethod/>
            </ns0:billingInfo>
            <ns0:flags>
                <ns0:flag type="1099 Payment Flag">Y</ns0:flag>
            </ns0:flags>
            <ns0:dates>
                <ns0:date type="Proposed Invoice Date">2018-11-02</ns0:date>
            </ns0:dates>
        </ns0:invoiceOrder>
    </ns0:Message1>
</ns0:Messages>

Хотелось бы иметь начальный и конечный теги только один раз в выводе XML (упомянутом выше), чтобы XML был хорошо отформатирован и соответствовал моим требованиям

начальные теги:

<ns0:Messages xmlns:ns0="http://sap.com/xi/XI/SplitAndMerge">
    <ns0:Message1>

Соответствующие конечные теги:

</ns0:Message1>
</ns0:Messages>

Любая помощь будет принята с благодарностью.

...