FLWOR

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Мова програмування XQuery визначає FLWOR (вимовляється як «flower») як вирази, які підтримують ітерацію та прив’язування змінних до проміжних результатів. FLWOR — це абревіатура: FOR, LET, WHERE, ORDER BY, RETURN. FLWOR майже аналогічний SELECT-FROM-WHERE SQL і може використовуватися для надання функціональних можливостей, подібних до XML-документів.

Значення кожної букви абревіатури

[ред. | ред. код]

Як згадувалось раніше ,FLWOR це абревіатура, і кожна буква означає певний вираз.

  • F - for. Вибирає набір усіх вузлів
  • L - let. Помістіть результат у змінну XQuery
  • W - where. Вибирає вузол, заданий умовою.
  • O - order by. Сортує вказані вузли відповідно до умов.
  • R - return. Повертає кінцевий результат.

Приклад

[ред. | ред. код]

Ось для прикладу у нас є такий xml документ під назвою ("file.xml").Тут вказані школи(school) з їхніми id та учні(student) , що навчаються у даних школах. Також кожен учень має ім'я(Name),

прізвище (Surname), стать(Sex), та рік народження(BirthYear).Імена та прізвища вигадані. Будь-які збіжності випадкові.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Schools>
  <School id="SH001">
    <Students>
      <Student id="ST1SH001">
        <Name>Sviatoslav</Name>
        <Surname>Kondera</Surname>
        <Sex>Man</Sex>
        <BirthYear>2002</BirthYear>
      </Student>
      <Student id="ST2SH001">
        <Name>Orest</Name>
        <Surname>Rodtsevych</Surname>
        <Sex>Man</Sex>
        <BirthYear>2002</BirthYear>
      </Student>
      <Student id="ST3SH001">
        <Name>Solomiya</Name>
        <Surname>Tymnyak</Surname>
        <Sex>Woman</Sex>
        <BirthYear>2005</BirthYear>
      </Student>
    </Students>
  </School>
  <School id="SH002">
    <Students>
      <Student id="ST1SH002">
        <Name>Yarina</Name>
        <Surname>Panteriy</Surname>
        <Sex>Woman</Sex>
        <BirthYear>2003</BirthYear>
      </Student>
      <Student id="S2SH002">
        <Name>Nazar</Name>
        <Surname>Rodtsevych</Surname>
        <Sex>Man</Sex>
        <BirthYear>2005</BirthYear>
      </Student>
    </Students>
  </School>
</Schools>

Приклад запиту XQuery . У даному прикладі ми йдемо циклом по усіх учнях(Student) та створюємо змінну StudentYears , яка позначає кількість років учня. Далі ми сортуємо учнів по року народження та вибираємо учнів , які мають більше або рівне 18 років. Та повертаємо ім'я , прізвище та кількість років.

for $student in doc("file.xml")//Student
let $StudentYears:= year-from-date(current-date())- $student/BirthYear
order by $student/BirthYear
where $StudentYears>=18
return (concat("Name: ",$student/Name ,"  Surname: ",$student/Surname,"  Years: ",$StudentYears))

Результат Запиту

Name: Sviatoslav  Surname: Kondera  Years: 19
Name: Orest  Surname: Rodtsevych  Years: 19
Name: Yarina  Surname: Panteriy  Years: 18

Посилання

[ред. | ред. код]