Что означают "+", "@" и "*" в запросе XPath? - PullRequest
2 голосов
/ 25 марта 2010

В документации iReport я нашел следующие запросы XPath:

/addressbook/category@name
/addressbook/category/person@id
/addressbook/category/person+LASTNAME
/addressbook/category/person+FIRSTNAME
/addressbook/category/person+hobbies*hobby

Мои вопросы:

  1. Является ли category@name таким же, как category/@name?
  2. Что означает person+LASTNAME? (Точнее, + )
  3. В чем смысл person+hobbies*hobby (точнее, *)

Они применяются к этому XML:

<addressbook>
 <category name="home">
    <person id="1">                                                           
      <LASTNAME>Davolio</LASTNAME>
      <FIRSTNAME>Nancy</FIRSTNAME>
      <hobbies>
        <hobby>Radio Control</hobby>
        <hobby>R/C Cars</hobby>
        <hobby>Micro R/C Cars</hobby>
        <hobby>Die-Cast Models</hobby>
      </hobbies>
      <email>email1@my.domain.it</email>
      <email>email2@my.domain2.it</email> 
     ...

(полный XML здесь )

1 Ответ

3 голосов
/ 25 марта 2010

Это не XPath. Это просто как XPath. Со страницы, на которую вы ссылались:

<symbol> используется для добавления дополнительного пути к базовому пути и определения того, что должно быть возвращено.
+ добавить следующий путь к base_path (это происходит, когда base_path = путь к записи);
@ вернуть значение атрибута: за ним следует имя атрибута;
* вернуть все теги, указанные по следующему пути, как JRXMLDatasource

Он находится в разделе 7.3 ссылки, которую вы указали в своем вопросе .

Итак, исходя из этого, это значения ваших XPath-подобных выражений:

/addressbook/category@name
  The basepath is /addressbook/category, return the attribute "name"

/addressbook/category/person@id
  The basepath is /addressbook/category/person, return the attribute "id"

/addressbook/category/person+LASTNAME
  The basepath is /addressbook/category/person, return the element "LASTNAME"

/addressbook/category/person+FIRSTNAME
  The basepath is /addressbook/category/person, return the element "FIRSTNAME"

/addressbook/category/person+hobbies*hobby
  The basepath is /addressbook/category/person, look inside "hobbies"
  and return all elements named "hobby"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...