xslt: какой самый простой способ сделать отрицательный выбор? - PullRequest
0 голосов
/ 12 декабря 2018

В основном мне хотелось бы, чтобы что-то вроде этого находило все узлы, в которых невозможно найти идентификатор («неработающие ссылки»):

<xsl:variable name="failedIDLookups" select="//inventory/box[@boxtypeID != //boxtypes/@ID]"/>

Но это работает не так, как ожидалось - яПредположим, что синтаксис неправильный, каким должен быть правильный способ сделать это?

1 Ответ

0 голосов
/ 12 декабря 2018

Я подозреваю, что вы хотите

<xsl:variable name="failedIDLookups" select="//inventory/box[not(@boxtypeID = //boxtypes/@ID)]"/>

, который затем можно было бы оптимизировать с помощью объявления ключа (как дочерний элемент xsl:stylesheet)

<xsl:key name="boxtypes-ref" match="boxtypes" use="@ID"/>

и

<xsl:variable name="failedIDLookups" select="//inventory/box[not(key('boxtypes-ref', @boxtypeID))]"/>
...