2008-09-17 26 views
5

Web sitesinde bir sürü XQUERY öğreticisini okuyorum. Hemen hemen hepsi bana XQUERY sözdizimini öğretiyorlar. Diyelim ki XQUERY sözdizimini anladım, web sitemde XQUERY'i gerçekte nasıl uygulayacağım? ÖrneğinXQUERY aslında nasıl kullanılır?

, ben book.xml vardır: Sonra

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

, ben Author.xml

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

Ben benziyor HTML oluşturmak istiyorum izleyen:

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

Lütfen bana bir örnek göster. Veya referans yapabileceğim herhangi bir web sitesi. Çok teşekkürler.

cevap

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: test etmedim/o idam, ama bu, belki de kullanmak gerekmez bir çözüm tamamen dürüst olmak gerekirse

+0

Ben de test etmedim, ama siz @id = $ book/authorid istediğinizden şüpheliyim. Bu durumda eq'nin nasıl karşılaştırıldığından emin değilim - referansları değil, değerleri karşılaştırdığını düşünüyorum. – 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

gibi görünebilir nasıl XQuery hiç.

Orta karmaşık XML belgelerini XML'den HTML'ye dönüştürmeniz gerekiyorsa, XSL'yi kullanmanızı öneririz. Şahsen, XSL'yi XQuery'den daha kolay buldum. Ayrıca, çevrimiçi olarak daha fazla sayıda örnek ve eğitici var. Çünkü XSL, daha uzun süredir var.

Şu anda XQuery kullanıyoruz, çünkü lisans aldığımız özel bir XML yazılımının parçası olarak gerekiyor. XQuery, büyük bir depodan XML parçalarını seçmek için harika bir araçtır, ancak belgelerimizi dönüştürmek için hala XSL kullanıyoruz.

2

XQuery, büyük bir veri deposundan belirli veri bölümlerini almanızı sağladığından SQL'e benzer. SQL ilişkisel veritabanları için kullanılır (MS SQL Server, Oracle, Sybase, MySQL, PostreSQL, SQLite, vb ...) ve XQuery XML veritabanları için kullanılır (MARKLogic, Sedena, Qexo, Qizx/db, vb ...).

MARKLogic size XDB sunucuları ve HTTP sunucuları sunar. Tipik bir web sunucunuz olabilir ve XDB aracılığıyla MARKLogic'e bağlanabilir veya onların HTTP sunucusunu kullanabilir ve XQuery'nizi doğrudan HTML'nizle karıştırabilirsiniz.

MARKLogic'in geliştirici sunucusunu (100MB belgelere izin veriyor) indirmenizi ve denemenizi öneririm.

+0

Oracle ve Sql Server gibi ilişkisel veritabanları da XQuery'yi destekler. – tuinstoel

3

xml'yi html'ye işlemek için bir sunucuya veya bir kütüphaneye ihtiyacınız vardır. Benim düşünceme göre, XQuery biraz karmaşık bir şeyle uğraşırken XSTL'den çok daha iyi. Aynı zamanda çok daha temiz bir dildir. Bu web sitesi a nice list of XQuery processors var.

1

bir web sitesi geliştirme ortamında XQuery'yi kullanarak için birçok senaryo olabilir:

oluşturuluyor sayfaları dinamik:

Sen gerekir sunucu tarafındaki kodunuzdan arayabileceğiniz bir API sağlayan bir kütüphane, eğer XML verileriniz geleneksel bir veritabanında saklanırsa böyle olur e veya dosya sistemi üzerinde. Örneğin: Zorba PHP için böyle bir API sağlar ve Java için XQuery API'sı vardır.

XML verileriniz XQuery'yi destekleyen bir XML veritabanı sunucusunda saklanırsa, XQuery sorgularınızı sunucuya gönderirsiniz. ve sonuçları geri al. Bu kategoride birçok açık kaynak ve ticari ürün var. BaseX açık kaynaklı bir örnektir. statik

oluşturuluyor sayfalar:

XML verilerinden statik HTML sayfaları bazı üretmek isteyebilirsiniz. Bu durumda bir komut satırı XQuery yardımcı programını çalıştırabilirsiniz, örneğin Zorba, Sakson, BaseX ve diğer birçokları CLI araçları sağlar. Ya da bir API kullanarak kendi komut dosyalarınızdan da yapabilirsiniz.

Böylece, XML sisteminiz her değiştiğinde bu komutları veya komut dosyalarını yürütmek için yapı sisteminizdeki kuralları tanımlarsınız.

Hem statik hem de dinamik yaklaşımlarda, ortamınızı XQuery'nin şablonlama sisteminizle birlikte çalışacağı şekilde ayarlayabilirsiniz; örneğin, XQuery tarafından tüm HTML sayfaları oluşturmak yerine, XML'ye göre HTML segmentleri oluşturabilir ve sonra bunları şablonlarınıza takın.

yukarıdaki durumlar HTML, XML dönüştürme konusunda, ancak XQuery web geliştirme sürecinde diğer şekillerde kullanılabilir:

dönüşümler dışında kullanır. Yararlı bulmanın bir yolu XML belgelerini değiştirmek. Uzun bir XML belgenizin olduğunu varsayalım ve alan değerlerini değiştirmek veya alanlar veya öznitelikler eklemek istiyorsunuz - bunu elde etmek için XQuery Update Facility uzantısını kullanabilirsiniz.

Bu yardımcı olur umarım. Örneğinizi konuşmadım çünkü sadece açıklama yapmak için olduğunu düşünüyorum.