# Frage zu XPath



## Guest (3. Nov 2005)

Hi Leute,

ich hoffe ihr könnt mir helfen!
Ich habe folgenden Aufbau eines ChatLogs:



```
<?xml version="1.0" encoding="UTF-8" ?> 
- <LogText>
- <Log Datum="02.11.2005">
  <Datum>02.11.2005</Datum> 
  <Uhrzeit>16:45</Uhrzeit> 
  <IP-Adresse>200.0.0.189</IP-Adresse> 
  <User>Test</User> 
  <Text>Test kommt in den Chat!</Text> 
  </Log>
- <Log>
  <Datum>02.11.2005</Datum> 
  <Uhrzeit>16:46</Uhrzeit> 
  <IP-Adresse>200.0.0.189</IP-Adresse> 
  <User>Test</User> 
  <Text>dies ist ein einfacher Test mit IP und allem drum und dran</Text> 
  </Log>
- <Log>
  <Datum>02.11.2005</Datum> 
  <Uhrzeit>16:51</Uhrzeit> 
  <IP-Adresse>200.0.0.189</IP-Adresse> 
  <User>Steffen</User> 
  <Text>Steffen kommt in den Chat!</Text> 
  </Log>
- <Log>
.......
```

Nun kann ich über


```
ergebnis = document.selectNodes("//Datum[text()='03.11.2005'] | //Datum[text()='03.11.2005']/following-sibling::* | //Datum[text()='03.11.2005']/preceding-sibling::* ");
```

Alle Datensätze, die am 03.11.05 geschrieben worden sind holen - und nun meine Frage:

Was, wenn ich alle Datensätze vom 3.11.05 um zum Beispiel 11:40 Uhr will???? Oder an einem gewissen Tag von einer gewissen IP?
Wie mache ich das?

Das | steht ja für ODER - aber es gibt kein &....mit and und or klappt es auch nicht - wie mache ich das? Ich dachte an so etwas wie


```
ergebnis = document.selectNodes("(//Datum[text()='03.11.2005'] | //Datum[text()='03.11.2005']/following-sibling::* | //Datum[text()='03.11.2005']/preceding-sibling::* ) and (//Uhrzeit[text()='11:40'] | //Uhrzeit[text()='11:40']/following-sibling::* | //Uhrzeit[text()='11:40']/preceding-sibling::* )");");
```

Aber ich bekomms nicht hin...


----------



## Bleiglanz (3. Nov 2005)

das and und or muss im test-ausdruck stehen

```
//Datum[text()='03.11.2005' or text()='03.11.2005']
```
usw.


----------



## Guest (3. Nov 2005)

Ja, aber ich habe ja 2 Elemente die ich prüfe - ich prüfe ja nicht nur auf Datum!
Hab es herausbekommen, habe es so gelöst (arg ist z.Bsp. "03.11.2005 11:41"):


```
// Wenn Datum und Uhrzeit eingegeben wurde
                          else if (args.matches("[0-9]{2}\\.[0-9]{2}\\.[0-9]{4} [0-9]{2}\\:[0-9]{2}")) {
                             ergebnis = document.selectNodes("//Log[self::Datum[text()='" + args.substring(0, args.indexOf(" ")) + "'] or Uhrzeit[text()='" + args.substring(args.indexOf(" ") + 1, args.length()) + "']]/*");
                          }
```


----------

