Announcement

Collapse
No announcement yet.

Warum bekommt er keine Lösung?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Warum bekommt er keine Lösung?

    Folgender XML Code is gegeben:

    Code:
    <?xml version="1.0"?> 
    <root> 
        <flights> 
           <flight from="Frankfurt" ziel="Rome" start="2008-09-07 09:30" arrival="2008-09-07 
               10:30" price="70" airlineId="0815"/> 
           <flight from="Frankfurt" ziel="Rome" start="2008-09-07 09:00" arrival="2008-09-07  
              10:05" price="70" airlineId="4711"/> 
           <flight from="Frankfurt" ziel="Helsinki" start="2008-09-07 09:50" arrival="2008-09- 
              07 11:45" price="90" airlineId="4711"/> 
           <flight from="Basel" ziel="Prag" start="2008-09-07 10:15" arrival="2008-09-07  
              11:30" price="60" airlineId="0815" /> 
           <flight from="Prague" ziel="Rome" start="2008-09-07 20:15" arrival="2008-09-07  
              21:30" price="160" airlineId="0815" /> 
           <flight from="Baden-Baden" ziel="Frankfurt" start="2008-09-07 08:30"  
              arrival="2008-09-07 09:05" price="55" airlineId="0007"/> 
        </flights> 
        <airlines foo="bar"> 
            <airline id="0007">  
                <name>BrianAir</name> 
                <homeAirport>Dublin</homeAirport> 
            </airline> 
            <airline id="4711" > 
                <name>Lufthansel</name> 
                <homeAirport>Frankfurt</homeAirport> 
            </airline> 
            <airline id="0815" >  
                <name>Einfach<!-- comment -->Jet</name> 
          <homeAirport>London</homeAirport> 
            </airline> 
        </airlines>  
    </root>
    In dieser XML Datei soll ich nun einmal die Direktflüge von Frankfurt nach Rome raussuchen.
    Sowie von Baden-Baden nach Rome.

    Für das erste bin ich bisher auf

    Code:
    for $x in doc("xml.xml") /root/flights/flight
    where $x/ziel=("Rome")
    and $x/start=("Frankfurt")
    return $x/flight
    gekommen. Allerdings sagt er mir hier,dass die Menge leer ist.

    Weiß jemand warum und kann mir evtl. bei der zweiten Frage helfen? Thx!

  • #2
    Adressiere Attribute mit vorangestelltem @-Zeichen und verwende from statt start. Das funktioniert ($x repräsentiert bereits die gefundenen flight-Elemente):
    Code:
    for $x in doc("xml.xml")/root/flights/flight
    where $x/@ziel="Rome" and $x/@from="Frankfurt"
    return $x
    Ergebnis:
    Code:
    <flight from="Frankfurt" ziel="Rome" start="2008-09-07 09:30"
            arrival="2008-09-07             10:30"
            price="70"
            airlineId="0815"/>
    <flight from="Frankfurt" ziel="Rome" start="2008-09-07 09:00"
            arrival="2008-09-07             10:05"
            price="70"
            airlineId="4711"/>

    Comment


    • #3
      Ah dank dir.

      Nun ist die nächste das Problem.

      Meine Idee ist zu vergleichen bei welchen Flügen der Ziel ort von BadenBaden und der Startort von den Flügen nach Rom gleich sind..

      aber ich hab noch kein Plan wie ich das umsetzn soll^^

      Comment


      • #4
        Ansatz:
        Code:
        for $x in doc("xml.xml")/root/flights/flight
        let $y := doc("xml.xml")/root/flights/flight[@from="Baden-Baden"]
        where $x/@ziel="Rome" and $x/@from = $y/@ziel
        return $x

        Comment

        Working...
        X