Фон
Получить значение из списка элементов XML с использованием уникального идентификатора.
Проблема
С учетом документа XML в виде:
<root xmlns:r="http://internet.com/network">
<r:equipment label="network">
<r:item id="1">computer</r:item>
<r:item id="2">network cable</r:item>
</r:equipment>
<r:equipment label="peripheral">
<r:item id="3">printer</r:item>
<r:item id="4">USB cable</r:item>
</r:equipment>
<r:install>
<r:step action="identify"><r:item id="1" />, <r:item id="2" />, <r:item id="3" />, and <r:item id="4" /></r:step>
<r:step action="unplug"><r:item id="2" /> from <r:item id="1" /></r:step>
<r:step action="plug"><r:item id="4" /> into <r:item id="3" /></r:step>
<r:step action="plug"><r:item id="4" /> into <r:item id="1" /></r:step>
</r:install>
</root>
Цель заключается в следующем:
- определить компьютер, сетевой кабель, принтер и USB-кабель
- отсоединить сетевой кабель от компьютера
- штекерUSB-кабель к принтеру
- подключите USB-кабель к компьютеру
Я попробовал следующее:
<xsl:template match="r:install">
<p>
Installation
</p>
<ol>
<xsl:for-each select="r:step">
<li><xsl:apply-templates select="." /></li>
</xsl:for-each>
</ol>
</xsl:template>
<xsl:template match="//root/r:install/r:step/r:item">
ID: <xsl:value-of select="@id" />
</xsl:template>
Другими словами, я бы хотел сопоставить <r:install>
, а затем используйте атрибут id
из любого элемента <r:item ... />
.Каждый <r:step />
может иметь несколько ссылок <r:item id="X" />
.Эти ссылки соответствуют элементам <r:item>...</r:item>
в списке элементов <r:equipment ../>
.
Значения id
для каждого <r:item />
гарантированно уникальны.
Я бы не хотел использоватьдополнительный тег, если это возможно (например, <r:item-ref id="X" />
).
Вопрос
С учетом <r:install><r:step action="unplug"><r:item id="4" /></r:step></r:install>
и следующий список:
<r:equipment label="peripheral">
<r:item id="3">printer</r:item>
<r:item id="4">USB cable</r:item>
</r:equipment>
Что соответствует select
Выражение XPath для получения значения USB cable
при применении шаблона, обращающегося к <r:item id="4" />
, который служит ссылкой на указанное значение, где-либо в документе XML?
Спасибо!