2008-09-17 7 views
5

Czytałem dużo samouczka XQUERY na stronie internetowej. Prawie wszyscy z nich uczą mnie składni XQUERY. Powiedzmy, że zrozumiałem składnię XQUERY, w jaki sposób mam wprowadzić XQUERY na moją stronę?w jaki sposób XQUERY jest rzeczywiście używany?

Na przykład, mam 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> 

Następnie mam author.xml

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

Chcę, aby wygenerować kod HTML, który wygląda tak następujący:

<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> 

Proszę pokazać mi przykład. Lub dowolnej strony internetowej, którą mogę zrobić, odniesienie. Dziękuję bardzo.

Odpowiedz

0
<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: nie testowane/wykonany, ale to jest jak jedno rozwiązanie może wyglądać

+0

Nie przetestowałem tego również, ale podejrzewam, że chcesz @id = $ book/authorid. Nie wiem, jak eq się w tych przypadkach porównuje - myślę, że porównuje odniesienia, a nie wartości. – Tirno

3
(: file: titles.xqy :) 
<table> 
<tr><th>title</th><th>author</th></tr> 
{ 
let $books-doc := doc("books.xml") 
let $authors-doc := doc("authors.xml") 
for $b in $books-doc//book, 
    $a in $authors-doc//author 
where $a/@id = $b/authorid 
return 
<tr> 
    <td>{$b/title/text()}</td> 
    <td>{$a/text()}</td> 
</tr> 
} 

1

Aby być całkowicie szczery, może nie trzeba używać XQuery w ogóle.

Jeśli potrzebujesz przekształcić umiarkowanie złożone dokumenty XML z XML na HTML, polecam używanie XSL. Osobiście odkryłem, że XSL jest łatwiejszy do nauczenia niż XQuery. Istnieje również większa liczba przykładów i samouczków dostępnych w Internecie, ponieważ XSL działa już od dłuższego czasu.

Obecnie używamy XQuery tylko dlatego, że jest to wymagane jako część specjalistycznego oprogramowania XML, na które posiadamy licencję. XQuery to fantastyczne narzędzie do wybierania fragmentów XML z dużego repozytorium, ale wciąż używamy XSL do przekształcania naszych dokumentów.

2

XQuery jest podobny do SQL, ponieważ pozwala na pobieranie określonych części danych z dużego repozytorium danych. SQL jest używany w relacyjnych bazach danych (MS SQL Server, Oracle, Sybase, MySQL, PostreSQL, SQLite, itp.), A XQuery jest używany w bazach danych XML (MARKLogic, Sedena, Qexo, Qizx/db itp.).

MARKLogic udostępnia serwery XDB i serwery HTTP. Możesz mieć typowy serwer WWW i połączyć się z MARKLogic przez XDB lub możesz użyć swojego serwera HTTP i połączyć XQuery z HTML bezpośrednio.

Proponuję pobrać serwer deweloperski MARKLogic (pozwala na 100 MB dokumentów) i spróbować.

+0

Relacyjne bazy danych, takie jak Oracle i Sql Server obsługują także XQuery. – tuinstoel

3

Potrzebujesz serwera lub biblioteki do przetworzenia xml do html. Moim zdaniem, XQuery jest o wiele lepszy niż XSTL w tego typu sprawach, gdy ma się do czynienia z czymś nieco skomplikowanym. Jest to również znacznie czystszy język. Ta strona internetowa ma numer a nice list of XQuery processors.

1

Istnieje wiele scenariuszy za pomocą XQuery w warunkach rozwoju WWW:

Generowanie strony dynamicznie:

będzie trzeba biblioteka udostępniająca interfejs API, który można wywoływać z kodu po stronie serwera, tak by było, gdyby dane XML były przechowywane w konwencjonalnych bazach danych e lub w systemie plików. Na przykład: Zorba zapewnia takie API dla PHP, a tam jest XQuery API dla Java itp.

Jeśli twoje dane XML są przechowywane na serwerze bazy danych XML, który obsługuje XQuery, to możesz wysłać kwerendy XQuery na serwer i odzyskaj wyniki. W tej kategorii znajduje się wiele produktów typu open source i komercyjnych. BaseX jest przykładem typu open source.

Generowanie strony statycznie:

może chcesz, aby wygenerować niektórych stron HTML statycznie z danych XML. W tym przypadku można uruchomić narzędzie wiersza poleceń XQuery, na przykład Zorba, Saxon, BaseX i wiele innych narzędzi tego typu. Możesz też zrobić to z własnych skryptów za pomocą API.

Następnie należy zdefiniować reguły w systemie kompilacji, aby wykonać te polecenia lub skrypty za każdym razem, gdy ulegną zmianie dane XML.

W obu podejściach statycznych i dynamicznych można ustawić środowisko tak, aby XQuery grał wraz z szablonem, na przykład zamiast generować całe strony HTML przez XQuery, można wygenerować segmenty HTML oparte na XML, a następnie podłącz je do swoich szablonów.

zastosowań innych niż przemian:

Powyższe przypadki są o przekształcenie XML do HTML, ale XQuery mogą być wykorzystywane w inny sposób w procesie tworzenia stron WWW. Jedną z metod, które uważam za użyteczne, jest modyfikowanie dokumentów XML. Załóżmy, że masz długi dokument XML i chcesz zmodyfikować wartości pól lub dodać pola lub atrybuty - możesz użyć rozszerzenia XQuery Update Facility, aby to osiągnąć.

Mam nadzieję, że to pomoże. Nie omawiałem twojego przykładu, ponieważ zakładam, że jest to tylko wyjaśnienie.