2013-07-21 47 views
-1

元素我有下面的XML和我不能創建正確的XPath表達式:Xpath的考慮比較其它

<previsioni> 
    <previsione data="30/1/2011"> 
     <luogo> 
      <nome>Bologna</nome> 
      <periodo t="mattino"> 
       <temp>8</temp> 
       <descrizione>Giornata fredda a Bologna</descrizione> 
      </periodo> 
      <periodo t="sera"> 
       <temp>4</temp> 
       <descrizione>Ancora più freddo in serata</descrizione> 
      </periodo> 
     </luogo> 
     <luogo> 
      <nome>Firenze</nome> 
      <periodo t="mattino"> 
       <temp>10</temp> 
       <descrizione>Giornata fredda e nuvolosa per Firenze.</descrizione> 
      </periodo> 
      <periodo t="sera"> 
       <temp>1</temp> 
       <descrizione>Brusco abbassamento delle temperature in serata...</descrizione> 
      </periodo> 
     </luogo> 
    </previsione> 
    <previsione data="31/1/2011"> 
     <luogo> 
      <nome>Bologna</nome> 
      <periodo t="mattino"> 
       <temp>13</temp> 
       <descrizione>Brusca impennata della temperatura</descrizione> 
      </periodo> 
      <periodo t="pomeriggio"> 
       <temp>16</temp> 
       <descrizione>Va ancora meglio nel pomeriggio...</descrizione> 
      </periodo> 
     </luogo> 
     <luogo> 
      <nome>Firenze</nome> 
      <periodo t="mattino"> 
       <temp>15</temp> 
       <descrizione>Pioggia e temperature in rialzo a Firenze</descrizione> 
      </periodo> 
      <periodo t="pomeriggio"> 
       <temp>14</temp> 
       <descrizione>Non cambia molto nel pomeriggio, ma dovrebbe smettere di piovere</descrizione> 
      </periodo> 
     </luogo> 
    </previsione> 
</previsioni> 

我不得不返回<descrizione>的文本時的<luogo>"Bologna"<periodo t="mattino"><temp>低於<luogo>"Firenze"<temp>

回答

1

副本-pastable單行:

//luogo[nome='Bologna']/periodo[@t='mattino' and (temp < ../../luogo[nome='Firenze']/periodo[@t='mattino']/temp)]/descrizione/text() 

結構:

//luogo[nome='Bologna'] 
    /periodo 
     [ 
      @t='mattino' 
      and (temp < ../../luogo[nome='Firenze']/periodo[@t='mattino']/temp) 
     ] 
    /descrizione/text() 

評論:

SELECT ALL <luogo> ELEMENTS WITH A <nome> CHILD THAT HAS TEXT 'Bologna', 
//luogo[nome='Bologna'] 
    THEIR <periodo> CHILDREN, 
    /periodo 
     THAT HAVE 
     [ 
      A @t ATTRIBURE EQUAL TO 'mattino' 
      @t='mattino' 
      AND A <temp> CHILD WHICH IS LOWER THAN THE SAME <temp> IN <luogo> "Firenze" 
      and (temp < ../../luogo[nome='Firenze']/periodo[@t='mattino']/temp) 
     ] 
    THEIR <descrizione> CHILD'S TEXT 
    /descrizione/text()