Рассмотрим этот фрагмент XML с «узлами», которые могут иметь неограниченные дочерние уровни элементов «подузла».
Я хочу найти @type
атрибут node
для любого заданного subnode
на основе его атрибута @id
. Например, если у меня есть идентификатор 9, я хочу вернуть type = "foo" сверху.
<xml>
<node type="bar">
<subnode id="4">
<subnode id="5"/>
</subnode>
<subnode id="6"/>
</node>
<node type="foo">
<subnode id="7">
<subnode id="8">
<subnode id="9"/>
</subnode>
</subnode>
<subnode id="10"/>
</node>
</xml>
E4X, который я придумал, но который терпит неудачу:
xml.node.(subnode.(@id == '8')).@type
Я могу понять, почему это не работает. Более разумно было бы следующее, но синтаксис не работает (в AS3):
xml.node.(..subnode.(@id == '8')).@type
Как это можно сделать?