Hier ist mein Beispiel xml data. Derzeit bin ich mit dem folgenden XPathWarum führt mein XPath dazu, dass Attribute in der falschen Reihenfolge gemeldet werden?
"//person[@id]|//plan[@selected='yes']//*[not(@max_dur)]"
und die gemeldeten Daten als
> head(z1)
id mode dep_time trav_time arr_time type link x y start_time end_time
1 10000062 car 03:32:01 00:00:47 03:32:48 <NA> <NA> <NA> <NA> <NA> <NA>
2 10000062 <NA> <NA> <NA> <NA> links <NA> 335757.670587 3127766.05749 03:32:48 07:37:44
3 10000062 <NA> <NA> <NA> <NA> work 21218 <NA> <NA> <NA> <NA>
4 10000062 car 07:37:44 00:08:52 07:46:36 <NA> <NA> <NA> <NA> <NA> <NA>
5 10000062 <NA> <NA> <NA> <NA> links <NA> 336661.535923 3120921.80874 07:46:36 08:23:20
6 10000062 <NA> <NA> <NA> <NA> meal 21594 <NA> <NA> <NA> <NA>
Aber wenn ich die Attribute alle lesen waren, die mithilfe von XPath "//person[@id]|//plan[@selected='yes']//*"
, die Attribute in der richtigen Reihenfolge angegeben werden. Mit der richtigen Reihenfolge meine ich die Reihenfolge des Auftretens der Attribute in den Beispieldaten. Die Attribute mode, dep_time, trav_time, and arr_time
sollten zuletzt wie folgt gemeldet werden.
head(z1)
id type link x y start_time max_dur end_time mode dep_time trav_time
1 10000062 home 21258 334867.243653 3126570.70778 00:00:00 03:32:01 <NA> car 03:32:01 00:00:47
3 10000062 links <NA> <NA> <NA> <NA> <NA> 07:37:44 <NA> <NA> <NA>
4 10000062 work 21218 335757.670587 3127766.05749 03:32:48 <NA> <NA> car 07:37:44 00:08:52
6 10000062 links <NA> <NA> <NA> <NA> <NA> 08:23:20 <NA> <NA> <NA>
7 10000062 meal 21594 336661.535923 3120921.80874 07:46:36 <NA> <NA> car 08:23:20 00:07:53
9 10000062 links <NA> <NA> <NA> <NA> <NA> 12:30:17 <NA> <NA> <NA>
Im Grunde will ich nicht das Attribut lesen, aber immer noch die Reihenfolge beibehalten, wie in der zweiten Tabelle.
Kann ich also sicher sein, dass sich die Reihenfolge für nachfolgende Ausführungen desselben XPath-Prozessors nicht ändert? – Gandalf
Nein, es gibt keine solche Garantie. (Es kann von der Reihenfolge der Einträge in einer Hash-Tabelle abhängen, und diese kann zum Beispiel zwischen einem Release von Java und dem nächsten variieren. Im Prinzip könnte ein XPath-Prozessor davon abhängen, ob die Sonne in Manchester scheint). –