2016-07-26 1 views
0

Я учусь на экзамен, и я не могу понять, что я делаю неправильно здесь.Xpath атрибут и текст

я получил этот XML

<?xml version="1.0"?> 
<schema xmlns="" 
    xmlns:xsi="link-2" 
    xsi:schemeLocation="link-3"> 

    <wm-stats> 
     <wm jahr="2014"> 
      <teilnehmer platz="1">Deutschland</teilnehmer> 
      <teilnehmer platz="2">Argentinien</teilnehmer> 
      <teilnehmer platz="3">Niederlande</teilnehmer> 
     </wm> 

     <wm jahr="2010"> 
      <teilnehmer platz="1">Spanien</teilnehmer> 
      <teilnehmer platz="2">Holland</teilnehmer> 
      <teilnehmer platz="3">Deutschland</teilnehmer> 
     </wm> 

     <wm jahr="2006"> 
      <teilnehmer platz="1">Italien</teilnehmer> 
      <teilnehmer platz="2">Frankreich</teilnehmer> 
      <teilnehmer platz="3">Deutschland</teilnehmer> 
     </wm> 

     <record name="Rekordtorschütze"> 
      <person> Miroslav Klose </person> hat in Brasilien ... 
     </record> 

     <record name="Rekordweltmeisterschaften"> 
      <ort> Brasilien </ort> ist mit 5 Weltmeistersiegen ... 
     </record> 
    </wm-stats> 
</schema> 

Теперь мне нужно найти все годы, где голландия принимал участие в чемпионате, я знаю, что я должен искать что-то вроде этого // СУС [@jahr]/teilnehmer [text() = "Holland"] Но как мне теперь получить значение jahr? правильный узел должен быть расположен бы Jahr 2010.

+0

Подсказка: вы ищете 'СУС [...]/@ jahr' – Markus

ответ

1

Другой путь

//wm[teilnehmer = "Holland"]/@jahr 

но ваш подход не невозможно спасти, либо

//wm[@jahr]/teilnehmer[. ="Holland"]/../@jahr 

* обратите внимание, что на самом деле [@jahr] излишними это выражение

Вы всегда можете перемещаться вверх (и сбоку) в XPath.

Посмотри на этом всеобъемлющем изображении, объясняющее различные XPath осей доступны для навигации: https://our.umbraco.org/wiki/reference/xslt/xpath-axes-and-their-shortcuts/