Я читал много руководств по 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>
Покажите мне, пожалуйста, какой-нибудь пример. Или любой веб-сайт, на который я могу ссылаться. Спасибо большое.





<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: не тестировал / не выполнял, но так может выглядеть одно решение
Честно говоря, возможно, вам вообще не нужно использовать 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.
Вам нужен сервер или библиотека для преобразования 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.
Надеюсь это поможет. Я не обсуждал ваш пример, потому что предполагаю, что он просто для пояснения.
Я тоже не тестировал, но подозреваю, что вам нужен @id = $ book / authorid. Не уверен, как eq сравнивает в этих случаях - я думаю, что он сравнивает ссылки, а не значения.