Выражение XPath 1.0 не может ссылаться на более чем один XML-документ , если ссылки на дополнительные документы не были установлены в контексте механизма XPath языком хостинга. Например, если XSLT является языком хостинга, то он делает свою функцию document()
доступной для механизма XPath, на котором она размещается.
document($xml2Uri)/Authors/Author[BookId = $mainDoc/Books/Book/@id]
Обратите внимание, что даже на основной XML-документ необходимо ссылаться через другой <xsl:variable>
, названный здесь $mainDoc
.
Функция document()
доступна только в том случае, если Xpath размещен в XSLT ! Это не упоминается в ответе Дока Брауна и вводит в заблуждение читателей.
Выражение XPath 2.x может относиться к любому дополнительному документу XML с использованием функции XPath 2.0 doc()
.
for $doc in /,
$doc2 in doc(someUri)
return
$doc2/Authors/Author[BookId = $doc/Books/Book/@id]