Эта таблица стилей:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="kSByCode" match="s" use="contents/code"/>
<xsl:template match="text()"/>
<xsl:template match="p[export='true']">
<xsl:copy-of select="key('kSByCode',code)"/>
</xsl:template>
</xsl:stylesheet>
С этим входом:
<stuff>
<s>
<contents>
<code>503886</code>
<code>602806</code>
</contents>
</s>
<p>
<code>602806</code>
<export>true</export>
</p>
</stuff>
Выход:
<s>
<contents>
<code>503886</code>
<code>602806</code>
</contents>
</s>
Примечание : Всякий раз, когда естьперекрестные ссылки, используйте ключи.
Редактировать : Пропущена итерация по s
части.Спасибо, Димитр!
Редактировать 2 : Перечитывая этот ответ, я увидел, что это может сбить с толку.Итак, для выражения , выбирающего узлы, используйте:
key('kSByCode',/stuff/p[export='true']/code)