🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.python
6 messages
6 total messages Started by blue Wed, 24 Nov 2010 10:37
użycie przestrzreni nazw w xml
#27804
Author: blue
Date: Wed, 24 Nov 2010 10:37
26 lines
1971 bytes
z takiego kodu:

gmd = etree.Element ("{http://www.isotc211.org/2005/gmd}MD_Metadata")
fileIdentifier = etree.SubElement (gmd,"fileIdentifier")
CharacterString = etree.SubElement (fileIdentifier,"CharacterString")
CharacterString.text = "3505d6d4-0154-489b-a555-35f5b2458063"

dostaję taki XML:

<ns0:MD_Metadata xmlns:ns0="http://www.isotc211.org/2005/gmd">
  <fileIdentifier>
    <CharacterString>3505d6d4-0154-489b-a555-35f5b2458063</
CharacterString>
  </fileIdentifier>
</ns0:MD_Metadata>

a chciałbym otrzymać coś takiego:

<gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd">
	<gmd:fileIdentifier>
		<gco:CharacterString>3505d6d4-0154-489b-a555-35f5b2458063</
gco:CharacterString>
	</gmd:fileIdentifier>
</gmd:MD_Metadata>

w czym tkwi problem?
Re: użycie przestrzreni nazw w xml
#27801
Author: Łukasz Rekucki
Date: Wed, 24 Nov 2010 12:26
34 lines
2613 bytes
On Nov 24, 11:37 am, blue <lukaszwojnow...@gmail.com> wrote:
> z takiego kodu:
>
> gmd = etree.Element ("{http://www.isotc211.org/2005/gmd}MD_Metadata")
> fileIdentifier = etree.SubElement (gmd,"fileIdentifier")
> CharacterString = etree.SubElement (fileIdentifier,"CharacterString")
> CharacterString.text = "3505d6d4-0154-489b-a555-35f5b2458063"
>
> dostaję taki XML:
>
> <ns0:MD_Metadata xmlns:ns0="http://www.isotc211.org/2005/gmd">
>   <fileIdentifier>
>     <CharacterString>3505d6d4-0154-489b-a555-35f5b2458063</
> CharacterString>
>   </fileIdentifier>
> </ns0:MD_Metadata>
>
> a chciałbym otrzymać coś takiego:
>
> <gmd:MD_Metadata xmlns:gmd="http://www.isotc211.org/2005/gmd">
>         <gmd:fileIdentifier>
>                 <gco:CharacterString>3505d6d4-0154-489b-a555-35f5b2458063</
> gco:CharacterString>
>         </gmd:fileIdentifier>
> </gmd:MD_Metadata>
>
> w czym tkwi problem?

Z dokładnością do elementu "CharacterString", gdzie nie podałeś żadnej
przestrzeni nazw w swoim programie, te dwa dokumentu są równoważne.
Implementacja etree w bibliotece standardowej nie ma opcji ustalania
nazw prefiksów dla przestrzeni nazw. W bibliotece LXML można podać
mapę (Namespace->prefix) przy tworzeniu elementu:
http://codespeak.net/lxml/tutorial.html#namespaces
Re: użycie przestrzreni nazw w xml
#27805
Author: blue
Date: Thu, 25 Nov 2010 07:59
2 lines
1409 bytes
A prefixy ns0 sąprzydzielane atuomatycznie? skąd się biorą właśnie
takie?
Re: użycie przestrzreni nazw w xml
#27806
Author: konryd
Date: Thu, 25 Nov 2010 09:32
9 lines
1716 bytes
On 25 Lis, 08:59, blue <lukaszwojnow...@gmail.com> wrote:
> A prefixy ns0 sąprzydzielane atuomatycznie? skąd się biorą właśnie
> takie?

A czy przypadkiem na początku wyjściowego xmla nie masz określenia że
ns0 to jest taka-a-taka przestrzeń nazw?

pozdrawiam,
Konrad
Re: użycie przestrzreni nazw w xml
#27812
Author: Łukasz Rekucki
Date: Thu, 25 Nov 2010 10:29
5 lines
1661 bytes
On Nov 25, 8:59 am, blue <lukaszwojnow...@gmail.com> wrote:
> A prefixy ns0 sąprzydzielane atuomatycznie? skąd się biorą właśnie
> takie?

Tak, są przydzielane automatycznie.
Re: użycie przestrzreni nazw w xml
#27808
Author: tomas.h
Date: Sat, 27 Nov 2010 13:34
22 lines
2125 bytes
On 25 Lis, 11:29, Łukasz Rekucki <lreku...@gmail.com> wrote:
> On Nov 25, 8:59 am, blue <lukaszwojnow...@gmail.com> wrote:
>
> > A prefixy ns0 sąprzydzielane atuomatycznie? skąd się biorą właśnie
> > takie?
>
> Tak, są przydzielane automatycznie.

Proponuje zapoznać się z:
NS = {
    None:        'przestrzeń domyślna dla xmlns=',
    'gmd':    'http://www.isotc211.org/2005/gmd'
}

ET._namespace_map.update(dict((NS[short], short) for short in NS))
# lub dla nowszych elementtree chyba od 1.3
# ET.register_namespace(short, NS[short])

Ja trochę się tego naszukałem:)

Pozdrawiam,
Tomek
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads