Hello Although not so much web2py question and more Python. I am struggling with creating some xmls - more specific namespaces. I would really appreciate it if smbd could help me with this
I am trying to get all the namespaces together., but somehow they are not named or declared properly, even more so if I have more data the numbers are increasing This is what I have to get <ns2:prenosPodatkovRazporedaZahtevaSporocilo xmlns="http://xxx.yyy/sheme/pdr/skupno/v1" xmlns:ns2="http://xxx.yyy/sheme/pdr/v1" xmlns:ns3="http://xxx.yyy/sheme/kis/skupno/v2" xmlns:ns4="http://xxx.yyy/sheme/kis/v2" xmlns:ns5="http://xxx.yyy/sheme/pdr/sporocila/v1"><ns2:podatkiRazporeda> <ns2:podatkiRazporeda> <ns2:delitvenaEnota> <sifra>80</sifra> </ns2:delitvenaEnota> <ns2:vrstaRazporeda> <sifra>4</sifra> </ns2:vrstaRazporeda> <ns2:tipRazporeda> <sifra>D</sifra> </ns2:tipRazporeda> <ns2:obdobje> <ns2:mesec>12</ns2:mesec> <ns2:leto>2017</ns2:leto> </ns2:obdobje> <ns2:skupina>0</ns2:skupina> <ns2:izvor>P_738</ns2:izvor> <ns2:oznakeDelaZaDneve> <ns2:oznakaDelaZaDan> <ns2:dan>1</ns2:dan> <ns2:oznakaDela>D4</ns2:oznakaDela> </ns2:oznakaDelaZaDan> .... </ns2:oznakeDelaZaDneve> <ns2:organizacijskaEnota> <sifra>738</sifra> </ns2:organizacijskaEnota> <ns2:zaposlenec> <ns4:osebnaStevilka>10357</ns4:osebnaStevilka> </ns2:zaposlenec> </ns2:podatkiRazporeda></ns2:podatkiRazporeda> and this is what I am getting from my code <ns0:prenosPodatkovRazporedaOdgovorSporocilo xmlns:ns="http://rccirc.si/sheme/pdr/skupno/v1" xmlns:ns2="http://rccirc.si/sheme/pdr/v1" xmlns:ns3="http://rccirc.si/sheme/kis/skupno/v2" xmlns:ns4="http://rccirc.si/sheme/kis/v2" xmlns:ns5="http://rccirc.si/sheme/pdr/sporocila/v1" xmlns:ns0="ns5"><ns0:podatkiRazporeda><ns1:podatkiRazporeda xmlns:ns1="ns2"> <ns1:vrstaRazporeda> <sifra>647</sifra> </ns1:vrstaRazporeda> <ns1:tipRazporeda> <sifra>D</sifra> </ns1:tipRazporeda> <ns1:obdobje> <ns1:mesec>1</ns1:mesec> <ns1:leto>2018</ns1:leto> </ns1:obdobje> <ns1:skupina>0</ns1:skupina> <ns1:izvor>0</ns1:izvor> <ns1:organizacijskaEnota> <sifra>250</sifra> </ns1:organizacijskaEnota> <ns6:delitvenaenota xmlns:ns6="ns3"> <sifra>80</sifra> </ns6:delitvenaenota> <ns1:oznakeDelaZaDneve> <oznakeDelaZaDneve> <ns1:dan>29</ns1:dan> <ns1:oznakaDela>1930-0730</ns1:oznakaDela> </oznakeDelaZaDneve> </ns1:oznakeDelaZaDneve> <ns1:zaposlenec> <ns7:osebnaStevilka xmlns:ns7="ns4">Z1</ns7:osebnaStevilka> </ns1:zaposlenec> </ns1:podatkiRazporeda> ....... <ns11:podatkiRazporeda xmlns:ns11="ns2"> <ns11:vrstaRazporeda> <sifra>647</sifra> </ns11:vrstaRazporeda> <ns11:tipRazporeda> <sifra>D</sifra> </ns11:tipRazporeda> <ns11:obdobje> <ns11:mesec>1</ns11:mesec> <ns11:leto>2018</ns11:leto> </ns11:obdobje> <ns11:skupina>0</ns11:skupina> <ns11:izvor>0</ns11:izvor> <ns11:organizacijskaEnota> <sifra>250</sifra> </ns11:organizacijskaEnota> <ns12:delitvenaenota xmlns:ns12="ns3"> <sifra>80</sifra> </ns12:delitvenaenota> <ns11:oznakeDelaZaDneve> <oznakeDelaZaDneve> <ns11:dan>3</ns11:dan> <ns11:oznakaDela>0730-1530</ns11:oznakaDela> </oznakeDelaZaDneve> ..... </ns11:oznakeDelaZaDneve> <ns11:zaposlenec> <ns13:osebnaStevilka xmlns:ns13="ns4">Z1</ns13:osebnaStevilka> </ns11:zaposlenec> </ns11:podatkiRazporeda></ns0:podatkiRazporeda></ns0:prenosPodatkovRazporedaOdgovorSporocilo> And since this is send trough REST my XML is always rejected You can see the ns are incremented on lower levels and the xmlns:ns13="ns4" is rejected by server and also I cannot get behind the whole ns start number thing Here is my code root = etree.Element('{ns2}prenosPodatkovRazporedaZahtevaSporocilo', nsmap = {'ns': "http://xxx.yyy/sheme/pdr/skupno/v1", #'ns2': "http://rccirc.si/sheme/pdr/sporocila/v1", 'ns2':"http://xxx.yyy/sheme/pdr/v1" , 'ns3':"http://xxx.yyy/sheme/kis/skupno/v2", 'ns4': "http://xxx.yyy/sheme/kis/v2", 'ns5': "http://xxx.yyy/sheme/pdr/sporocila/v1"}) podatkiRazporedaMain = etree.SubElement(root, '{ns2}podatkiRazporeda') # Add the subelements #I. nivo #tole gre na nivo delavca for rec in grouped_workers: podatkiRazporeda = etree.SubElement(podatkiRazporedaMain, '{ns3}podatkiRazporeda') vrstaRazporeda= etree.SubElement(podatkiRazporeda, '{ns3}vrstaRazporeda') vrstaRazporedaSifra = etree.SubElement(vrstaRazporeda, 'sifra').text = "647" #vrstaRazporedaSifra.text = "647" tipRazporeda= etree.SubElement(podatkiRazporeda, '{ns3}tipRazporeda') tipRazporedaSifra = etree.SubElement(tipRazporeda, 'sifra').text = 'D' #tipRazporedaSifra.text = 'D' obdobje= etree.SubElement(podatkiRazporeda, '{ns3}obdobje') obdobjeMesec= etree.SubElement(obdobje, '{ns3}mesec').text = str(results_woshi[0]["rw_date"].month) #obdobjeMesec.text = str(results_woshi[0]["rw_date"].month) obdobjeLeto= etree.SubElement(obdobje, '{ns3}leto').text = str(results_woshi[0]["rw_date"].year) #obdobjeLeto.text = str(results_woshi[0]["rw_date"].year) skupina= etree.SubElement(podatkiRazporeda, '{ns3}skupina') skupina.text = "0" izvor = etree.SubElement(podatkiRazporeda, '{ns3}izvor').text = "P_738" #izvor.text = "P_738" #vrstaRazporedaSifra.text = str(rec["data"][0]["rw_script"]) organizacijskaEnota= etree.SubElement(podatkiRazporeda, '{ns3}organizacijskaEnota') organizacijskaEnotaSifra= etree.SubElement(organizacijskaEnota, 'sifra').text = str(results_woshi[0]["rw_organization"]) #organizacijskaEnotaSifra.text = str(results_woshi[0]["rw_organization"]) delitvenaenota = etree.SubElement(podatkiRazporeda, '{ns3}delitvenaEnota') delitvenaenotaSifra = etree.SubElement(delitvenaenota, 'sifra').text = '80' #delitvenaenotaSifra.text ='80' oznakeDelaZaDneve= etree.SubElement(podatkiRazporeda, '{ns3}oznakeDelaZaDneve') zaposlenec = etree.SubElement(podatkiRazporeda, '{ns3}zaposlenec') zaposlenecSifra= etree.SubElement(zaposlenec, '{ns5}osebnaStevilka').text = str(results_woshi[0]["rw_worker_nick"]) #zaposlenecSifra.text = str(results_woshi[0]["rw_worker_nick"]) # sporocilo= etree.SubElement(podatkiRazporeda, '{ns2}sporocilo') # sporocilo.text = "Vpis zaposlenca" #za vsakega delavca znotrej za vsak dan v razporedu for rr in rec["data"]: oznakaDelaZaDan = etree.SubElement(oznakeDelaZaDneve, '{ns3}oznakeDelaZaDneve') dan= etree.SubElement(oznakaDelaZaDan, '{ns3}dan') dan.text = str(rr["rw_date"].day) oznakaDela = etree.SubElement(oznakaDelaZaDan, '{ns3}oznakaDela') oznakaDela.text = str(rr["rw_shift"]) #if done for all workers break is commented break #print etree.tostring(root, pretty_print=True, xml_declaration=False, encoding='UTF-8') fle = os.path.join(request.folder, 'private', str(647) + '.xml') with open(fle, 'wb') as f: f.write(etree.tostring(root, pretty_print=True, xml_declaration=False, encoding='UTF-8')) print "Done" the question is also on stackoverflow https://stackoverflow.com/questions/48544948/python-lxml-etree-namespaces-on-creation Any suggestions? thank you -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.

