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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to