Re: XML::LibXML::Node nextSibling()



Axel Strube-Zettler <axel@xxxxxxxxxxxxxxxxx> writes:

> Holger Schauer wrote:
>
> > On 4451 September 1993, Axel Strube-Zettler wrote:
> >
> >>my $node1 = $doc->findnodes('/cdcatalog/*[5]');
> > [...]
> >
> >>Als XML-Daten habe ich das hier verwendet:
> >>http://www.w3schools.com/xsl/cdcatalog.xml
> >>Das Testprogramm druckt mir brav die Nummer 5 aus.
> > Faszinierend. Das tut es bei mir nicht, denn die Dokumentinstanz
> > enthält gar keine cdcatalog-Elemente.
>
> In der Tat faszinierend, denn auf meinem Rechner heißt das
> 'cdcatalog'. Entweder schwirren bei w3scools verschiedene Versionen
> rum, oder ich hab das selber in geistiger Umnachtung umgetauft;-) Ich
> wollte ja hier nur vermeiden, díe ganze XML-Datei zu posten. Sorry für
> den kleinen Lapsus.
>
> > Mit my $node1 = $doc->findnodes('//cd[5]');
> > erhalte ich dagegen eine Ausgabe.
> >
> >>Mit nextSibling() erwarte ich eigentlich, dass er mir die CD Nummer
> >>6 druckt, is aber nich. Ich kriege damit nur irgendeinen leeren
> >>Node, mit dem ich nichts anfangen kann.
> > Der Node ist nicht leer, sondern ein Textnode. Schau' Dir das
> > XML-File
> > nochmal an: da ist Whitespace zwischen den cd-Elementen.
>
> Das war also mein Denkfehler. In .NET wird der Whitespace wohl per
> Default ignoriert, jedenfalls hatte ich da nie ein Problem damit. Mit
> $parser->keep_blanks(0) klappt's jetzt. Gibt es irgendeinen guten
> Grund, dass in LibXML 1 der Default ist?
>

Das Problem ist, dass je nach Typ des XML-Dokuments man intuitiv
unterschiedliche Dinge erwartet. In einem eher text-artigen XML würde
man gerne Whitespace immer/meistens signifikant haben, in einem eher
daten-lastigen XML würde man hingegen Whitespace, der meist nur zur
Formatierung eingetragen wurde, ignorieren.

Ein Grund mehr, warum XML zum Datentransport nicht unbedingt geeignet
ist.

Gruß,
Slaven

--
Slaven Rezic - slaven <at> rezic <dot> de

Tk-AppMaster: a perl/Tk module launcher designed for handhelds
http://tk-appmaster.sf.net
.



Relevant Pages