xpath 1.0 - Мне пришлось изменить подход, потому что XML изменился.php xpath выбирает узлы на основе значений двух атрибутов (редактировать) И атрибуты его родителей
мне нужно вытащить
t-Attribute FROM the <d>-node WHERE its
raw-Attribute = 10
AND its parent-node's <scale> gender-Attribute = "*" OR "m"
AND the age-Attribute = "*" OR "39-59"
<scales>
<scale id="1" gender="*" age="*">
<d scid="hi" raw="10" t="76" />
<d scid="pn" raw="12" t="80" />
</scale>
<scale id="2" gender="m" age="*">
<d scid="hi" raw="8" t="79" />
<d scid="pn" raw="2" t="50" />
</scale>
<scale id="3" gender="*" age="19-39">
<d scid="hi" raw="0" t="48" />
<d scid="pn" raw="10" t="49" />
</scale>
</scales>
Для моей первоначальной цели, решение прохожего работало как шарм, но я не могу понять, как решить дополнительную задачу ...
$result=$xml->xpath('//scale[@gender="*" or @gender="m"][@age="*" or @age="39-59"]');
Вот моя оригинальная задача ...
Я хочу выбрать узлы из xml, где два атрибута содержат определенные значения. Я использую simplexml, поэтому xpath должен быть 1.0.
XML фрагмент:
<scales>
<scale id="1" gender="*" age="*">
<d>5</d>
<d>9</d>
</scale>
<scale id="2" gender="m" age="*">
<d>3</d>
<d>0</d>
</scale>
<scale id="3" gender="*" age="19-39">
<d>12</d>
<d>19</d>
</scale>
</scales>
Теперь я хочу, чтобы выбрать все <scale>
, которые имеют ...
(gender="*" OR gender="m") AND (age="*" OR age="39-59")
в моем примере те, с ID = 1 и ид = 2
Я знаю, как это сделать с 1 атрибутом, но без условий OR/AND ...
$scales=$xml->xpath("//scale[@gender='m']");
фантастическим, спасибо! – michi
должен был настроить мою цель с помощью этого xpath, не могли бы вы взглянуть на нее, если это нормально для вас? http://stackoverflow.com/questions/15158314/php-xpath-retrieving-attribute-values-based-on-multiple-attributes-and-parent-at#comment21344739_15158314 – michi