Получить атрибут из узла, используя другой атрибут с несколькими значениями XML / XSL - PullRequest
0 голосов
/ 30 октября 2018

Я не понимаю, как добраться до атрибута, который ищет атрибут с несколькими значениями.

Я напишу пример из W3school

[ссылка: https://www.w3schools.com/xml/xpath_examples.asp]

<bookstore>
<book category="web">
  <title lang="en">XQuery Kick Start</title>
  <author>James McGovern</author>
  <author>Per Bothner</author>
  <author>Kurt Cagle</author>
  <author>James Linn</author>
  <author>Vaidyanathan Nagarajan</author>
  <year>2003</year>
  <price>49.99</price>
</book>

</bookstore>

Как мне получить, например, поиск заголовка со строкой <xsl:value-of "/bookstore/book[author = James McGovern]/title"/>.

Может кто-нибудь мне помочь? Я новичок в использовании XML и XSL.

Спасибо.

1 Ответ

0 голосов
/ 30 октября 2018

Во-первых, будьте осторожны с вашей терминологией. В вашем XML только category и lang являются атрибутами. С другой стороны author это элемент. Итак, вы действительно спрашиваете, как сопоставить, когда несколько дочерних элементов имеют одно и то же имя.

Ответ заключается в том, чтобы сделать именно то, что вы пытаетесь сделать, ожидайте, что вам просто нужно указать имя автора в апострофах, чтобы указать, что это строковый литерал

<xsl:value-of select="/bookstore/book[author = 'James McGovern']/title"/>

Если у вас есть выражение типа author = 'James McGovern', оно на самом деле проверит все элементы author и вернет true, если хотя бы одно совпадение. Таким образом, он все равно вернет истину, даже если «Джеймс Макговерн» является последним перечисленным автором.

(Если вы хотите узнать больше, вы можете прочитать о логических выражениях в официальной спецификации W3C по адресу https://www.w3.org/TR/xpath-10/#booleans. В частности, этот случай покрыт строкой " Если сравнивается один объект является набором узлов, а другой является строкой, тогда сравнение будет истинным в том и только в том случае, если в наборе узлов есть узел, так что результат выполнения сравнения со строковым значением узла и другого строка верна")

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...