Как на самом деле используется XQUERY?

Я читал много руководств по XQUERY на сайте. Почти все они учат меня синтаксису XQUERY. Допустим, я понял синтаксис XQUERY, как я собираюсь реализовать XQUERY на своем веб-сайте?

Например, у меня book.xml:

<?xml version = "1.0" encoding = "iso-8859-1" ?>
<books>
<book>
   <title>Doraemon</title>
   <authorid>1</authorid>
</book>
<book>
   <title>Ultraman</title>
   <authorid>2</authorid>
</book>
</books>

Тогда у меня author.xml

<?xml version = "1.0" encoding = "iso-8859-1" ?>
<authors>
<author id = "1">Mr A</author>
<author id = "2">Mr B</author>
</authors>

Я хочу сгенерировать HTML, который выглядит следующим образом:

<table>
    <tr>  <td>Title</td>     <td>Author</td> </tr>
    <tr>  <td>Doraemon</td>  <td>Mr A</td>   </tr>
    <tr>  <td>Ultraman</td>  <td>Mr B</td>   </tr>
</table>

Покажите мне, пожалуйста, какой-нибудь пример. Или любой веб-сайт, на который я могу ссылаться. Спасибо большое.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
6
0
8 961
6

Ответы 6

<table>
<tr><td>Title<td><td>Author<td></tr>
{
    let $authordoc := fn:doc("author.xml")
    for $book in fn:doc("book.xml")/books/book
    return
        <tr>
                <td>{ $book/title }</td>
                <td>{ $authordoc/authors/author/[@id eq $book/authorid] }</td>
        </tr>
}
</table>

ps: не тестировал / не выполнял, но так может выглядеть одно решение

Я тоже не тестировал, но подозреваю, что вам нужен @id = $ book / authorid. Не уверен, как eq сравнивает в этих случаях - я думаю, что он сравнивает ссылки, а не значения.

Tirno 30.09.2008 19:50

Честно говоря, возможно, вам вообще не нужно использовать XQuery.

Если вам нужно преобразовать умеренно сложные XML-документы из XML в HTML, я бы рекомендовал использовать XSL. Лично я считаю, что XSL легче изучить, чем XQuery. В Интернете также доступно большее количество примеров и руководств, поскольку XSL существует дольше.

В настоящее время мы используем XQuery только потому, что он требуется как часть лицензированного нами специализированного программного обеспечения XML. XQuery - фантастический инструмент для выбора фрагментов XML из большого репозитория, но мы по-прежнему используем XSL для преобразования наших документов.

XQuery похож на SQL в том, что он позволяет вам извлекать определенные части данных из большого репозитория данных. SQL используется для реляционных баз данных (MS SQL Server, Oracle, Sybase, MySQL, PostreSQL, SQLite и т. д.), А XQuery используется для баз данных XML (MARKLogic, Sedena, Qexo, Qizx / db и т. д.).

MARKLogic предоставляет вам серверы XDB и HTTP-серверы. У вас может быть типичный веб-сервер и подключаться к MARKLogic через XDB, или вы можете использовать их HTTP-сервер и напрямую смешивать свой XQuery с вашим HTML.

Я предлагаю загрузить сервер разработчика MARKLogic (позволяет хранить 100 МБ документов) и попробовать.

Реляционные базы данных, такие как Oracle и Sql Server, также поддерживают XQuery.

tuinstoel 08.03.2009 10:51

Вам нужен сервер или библиотека для преобразования xml в html. На мой взгляд, XQuery намного лучше XSLT в подобных делах, когда вы имеете дело с чем-то слегка сложным. Кроме того, это гораздо более чистый язык. У этого веб-сайта есть хороший список процессоров XQuery.

Может быть много сценариев использования XQuery при разработке веб-сайтов:

Динамическое создание страниц:

Вам понадобится библиотека, которая предоставляет API, который вы можете вызывать из вашего серверного кода, это будет иметь место, если ваши XML-данные хранятся, скажем, в обычной базе данных или в файловой системе. Например: Zorba предоставляет такой API для PHP, а есть XQuery API для Java и т. д.

Если ваши данные XML хранятся на сервере базы данных XML, который поддерживает XQuery, вы должны отправить запросы XQuery серверу и получить результаты обратно. В этой категории много продуктов с открытым исходным кодом и коммерческих продуктов. BaseX - это пример с открытым исходным кодом.

Статическая генерация страниц:

Возможно, вы захотите сгенерировать некоторые HTML-страницы статически из XML-данных. В этом случае вы можете запустить утилиту XQuery из командной строки, например, Zorba, Saxon, BaseX и многие другие предоставляют такие инструменты CLI. Или вы также можете сделать это из ваших собственных сценариев с помощью API.

Затем вы должны определить правила в своей системе сборки для выполнения этих команд или сценариев при изменении ваших XML-данных.

Как в статическом, так и в динамическом подходах вы можете настроить свою среду так, чтобы XQuery играл вместе с вашей системой шаблонов, например, вместо генерации целых HTML-страниц с помощью XQuery вы можете генерировать сегменты HTML на основе XML, а затем вставлять их в свой шаблоны.

Использование, отличное от преобразований:

Вышеупомянутые случаи касаются преобразования XML в HTML, но XQuery можно использовать и другими способами в процессе веб-разработки. Один из способов, которым я считаю полезным, - это изменение XML-документов. Допустим, у вас есть длинный XML-документ и вы хотите изменить значения полей или добавить поля или атрибуты - для этого вы можете использовать расширение XQuery Update Facility.

Надеюсь это поможет. Я не обсуждал ваш пример, потому что предполагаю, что он просто для пояснения.

Другие вопросы по теме