xpath < Sonstiges < Hochschule < Informatik < Vorhilfe
|
|
Status: |
(Antwort) fertig | Datum: | 02:34 So 09.03.2008 | Autor: | rainerS |
Hallo Bastiane!
> Hallo zusammen!
>
> Wieso steht bei den Beispielen
> hier bei ganz
> wenigen ein Slash als erstes?
Ohne Slash ist es eine RelativePathExpr, die sich auf den context node bezieht. Mit Slash bezieht es sich auf die Wurzel des Dokuments, in dem der context node vorkommt.
> Ich verstehe die Erklärung
> mit dem "same document as the context node" nicht.
In Abschnitt 3.2 steht:
A "/" at the beginning of a path expression is an abbreviation for the initial step fn:root(self::node()) treat as document-node()/ [...] The effect of this initial step is to begin the path at the root node of the tree that contains the context node.
> Und im Skript hatten wir noch:
>
> Was ist der Unterschied zwischen
> /descendant::para[1] und
> //para[1] [mm]\Rightarrow[/mm] /descendant-or-self::node()/para[1] ?
>
> Eine Antwort habe ich leider nicht - kann mir das jemand
> erklären, bitte?
Das steht ein bischen unterhalb der Stelle, auf die du verlinkt hast, in Unterabschnitt 3.2.4 :
The path expression //para[1] does not mean the same as the path expression /descendant::para[1]. The latter selects the first descendant para element; the former selects all descendant para elements that are the first para children of their respective parents.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 23:05 So 09.03.2008 | Autor: | Bastiane |
Hallo rainerS!
> > Wieso steht bei den Beispielen
> > hier bei ganz
> > wenigen ein Slash als erstes?
>
> Ohne Slash ist es eine RelativePathExpr, die sich auf den
> context node bezieht. Mit Slash bezieht es sich auf die
> Wurzel des Dokuments, in dem der context node vorkommt.
Das verstehe ich nicht. Was ist denn jetzt der Kontextknoten? Wenn doch vorher gar nichts steht, woher weiß man das denn dann?
> > Was ist der Unterschied zwischen
> > /descendant::para[1] und
> > //para[1] [mm]\Rightarrow[/mm]
> /descendant-or-self::node()/para[1] ?
> >
> > Eine Antwort habe ich leider nicht - kann mir das jemand
> > erklären, bitte?
>
> Das steht ein bischen unterhalb der Stelle, auf die du
> verlinkt hast, in Unterabschnitt 3.2.4 :
>
> The path expression //para[1] does not mean the same as the path expression /descendant::para[1]. The latter selects the first descendant para element; the former selects all descendant para elements that are the first para children of their respective parents.
Mmh, Zitate, vor allem englische, helfen mir meist nicht ganz so gut. Also das erste gibt alle Para-Elemente aus, die die ersten Kinder ihrer Eltern sind. Und das andere?
Viele Grüße
Bastiane
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 08:13 Mo 10.03.2008 | Autor: | rainerS |
Hallo Bastiane!
> Hallo rainerS!
>
> > > Wieso steht bei den Beispielen
> > > hier bei ganz
> > > wenigen ein Slash als erstes?
> >
> > Ohne Slash ist es eine RelativePathExpr, die sich auf den
> > context node bezieht. Mit Slash bezieht es sich auf die
> > Wurzel des Dokuments, in dem der context node vorkommt.
>
> Das verstehe ich nicht. Was ist denn jetzt der
> Kontextknoten? Wenn doch vorher gar nichts steht, woher
> weiß man das denn dann?
Ganz am Anfang ist der Kontextknoten der Dokumentknoten, also die Wurzel des Dokuments. Wenn du einen Ausdruck hast wie
bla/blubb
(bla und blubb sind irgendwelche gültigen Ausdrücke), dann wird zunächst bla genommen und ausgewertet. Das Ergebnis ist eine geordnete Liste von Knoten. Dann wird für jeden einzelnen dieser Knoten blubb genommen und ausgewertet. Der aktuell gerade betrachtete Knoten ist der Kontextknoten. Dann gibt es noch die Kontextposition (die Position des Knotextknoten in der Liste), die Kontextgröße (die Länge der Liste).
Ein "//" in der Mitte ist eine Abkürzung für "/descendant-or-self::node()/".
Ein "/" oder "//" am Anfang bedeutet, dass statt des Kontextknotens die Wurzel bzw. alle Knoten des Baumes betrachtet werden.
> > > Was ist der Unterschied zwischen
> > > /descendant::para[1] und
> > > //para[1] [mm]\Rightarrow[/mm]
> > /descendant-or-self::node()/para[1] ?
> > >
> > > Eine Antwort habe ich leider nicht - kann mir das
> jemand
> > > erklären, bitte?
> >
> > Das steht ein bischen unterhalb der Stelle, auf die du
> > verlinkt hast, in Unterabschnitt 3.2.4 :
> >
> > The path expression //para[1] does not mean the same as the
> path expression /descendant::para[1]. The latter selects
> the first descendant para element; the former selects all
> descendant para elements that are the first para children
> of their respective parents.
>
> Mmh, Zitate, vor allem englische, helfen mir meist nicht
> ganz so gut. Also das erste gibt alle Para-Elemente aus,
> die die ersten Kinder ihrer Eltern sind. Und das andere?
"//" ist ja die Abkürzung für "descendant-or-self::node()/", also eine Liste, bestehend aus dem Kontextknoten und aller seiner Unterknoten. Auf jedes Element dieser Liste wird das Prädikat "para[1]" angewandt, das ist die Abkürzung für "child::para[1]", das ergibt für jeden Knoten der Liste das erste para-Kind.
Viele Grüße
Rainer
|
|
|
|