Hello,

just updated from 2.29.24 to 2.30.8 and discovered a maybe bug in the export 
function.

2.29.24 
was: def export(self, outfile, level, namespaceprefix_='', name_='Target', 
namespacedef_='', pretty_print=True):

2.30.8 
is: def export(self, outfile, level, namespaceprefix_='', namespacedef_='', 
name_='Target', pretty_print=True):

well Ok, change of the parameter order, but there must be something wrong:

test code:

        requestID = Natparas2.RequestID('DE','045','1234567')
        dt = datetime.datetime.now().replace(microsecond=0)
        localtime = dt.astimezone(pytz.timezone("Europe/Berlin"))
        timestamp = str(localtime).replace(" 
","").replace("-","").replace(":","")
        cSPID = '49045'
        retainedDataHeader = Natparas2.RetainedDataHeader(requestID, cSPID, 
timestamp)
        requestAcknowledgement = Natparas2.RequestAcknowledgement()
        retainedDataPayload = Natparas2.RetainedDataPayload(None, 
requestAcknowledgement)
        testxml = 
Natparas2.RetainedDataMessage('0.4.0.2.3.0.14',retainedDataHeader, 
retainedDataPayload)
        
        output = StringIO()
        output.write('<?xml version="1.0" encoding="UTF-8"?>\n')
        testxml.export(output, 0, '', 'retainedDataMessage')


From 2.29.24:
<?xml version="1.0" encoding="UTF-8"?>
<retainedDataMessage xmlns="http://uri.etsi.org/02657/v1.18.1#/RetainedData";>
    <rdHeaderId>0.4.0.2.3.0.14</rdHeaderId>
    <retainedDataHeader>
        <requestID>
            <countryCode>DE</countryCode>
            <authorisedOrganisationID>045</authorisedOrganisationID>
            <requestNumber>1234567</requestNumber>
        </requestID>
        <cSPID>49045</cSPID>
        <timeStamp>20181210101011+0100</timeStamp>
    </retainedDataHeader>
    <retainedDataPayload>
        <requestAcknowledgement/>
    </retainedDataPayload>
</retainedDataMessage>

as it sould be.
Note: using default ns for RetainedDataMessage:

GenerateDSNamespaceDefs = {
    "RetainedDataMessage": 
'xmlns="http://uri.etsi.org/02657/v1.18.1#/RetainedData";',
}

defined only for the xml tag < RetainedDataMessage> and as the output shows,
it is only printed in line 2 of the output.
All other xml tags are without NS.

From 2.30.8:
<?xml version="1.0" encoding="UTF-8"?>
<RetainedDataMessage xmlns="http://uri.etsi.org/02657/v1.18.1#/RetainedData";>
    <rdHeaderId>0.4.0.2.3.0.14</rdHeaderId>
    <retainedDataHeader xmlns="http://uri.etsi.org/02657/v1.18.1#/RetainedData";>
        <requestID xmlns="http://uri.etsi.org/02657/v1.18.1#/RetainedData";>
            <countryCode>DE</countryCode>
            <authorisedOrganisationID>045</authorisedOrganisationID>
            <requestNumber>1234567</requestNumber>
        </requestID>
        <cSPID>49045</cSPID>
        <timeStamp>20181210102515+0100</timeStamp>
    </retainedDataHeader>
    <retainedDataPayload 
xmlns="http://uri.etsi.org/02657/v1.18.1#/RetainedData";>
        <requestAcknowledgement 
xmlns="http://uri.etsi.org/02657/v1.18.1#/RetainedData"/>
    </retainedDataPayload>
</RetainedDataMessage>

Difference:

ALL other xml tags get the defaultNS which is wrong here, because only 
<RetainedDataMessage> shall have it.
All other xml tags should go without defaultNS.

Code compare shows:

in 2.29.24:
self.exportChildren(outfile, level + 1, namespaceprefix_='', name_='Target', 
pretty_print=pretty_print)

in 2.30.8:
self.exportChildren(outfile, level + 1, namespaceprefix_, namespacedef_, 
name_='Target', pretty_print=pretty_print)

here the namespacedef_ is added, but if the children is another xml tag with 
another name like <retainedDataHeader>, and the defaultNS ist
wrong here because it is not valid and only valid for <RetainedDataMessage>.
So it must be checked in advance if it is valid here or not and if is defined 
for the given tag name.

Please fix it 😉 
Perhaps either roll back to the old behaviour or please implement a name check 
in the children print function
to check if the children xml tag name hat got a defaultNS defined for its tag 
name.

Regards,
Bernd


_______________________________________________
generateds-users mailing list
generateds-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/generateds-users

Reply via email to