2008-09-17 4 views
5

저는 웹 사이트에서 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> 

몇 가지 예를 보여주십시오. 또는 내가 참조 할 수있는 웹 사이트. 매우 감사합니다.

답변

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> 

추신 : 시험하지 않았다/그것을 실행, 그러나 이것은, 어쩌면 당신이 사용할 필요가없는 하나 개의 솔루션이 완전히 솔직히

+0

아직 테스트하지는 않았지만 @id = $ book/authorid를 원한다고 생각됩니다. 이 경우에 eq가 어떻게 비교되는지 잘 모르겠다. 나는 값이 아닌 참조를 비교한다고 생각한다. – 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

처럼 보일 수있는 방법입니다 XQuery.

중간에서 복잡한 XML 문서를 XML에서 HTML로 변환해야하는 경우 XSL을 사용하는 것이 좋습니다. 개인적으로 XSL은 XQuery보다 배우기 쉽다는 것을 알게되었습니다. XSL이 오랫동안 사용 되었기 때문에 온라인에서 사용할 수있는 많은 예제 및 자습서가 있습니다.

XQuery는 라이센스가있는 전문 XML 소프트웨어의 일부로 필요하기 때문에 XQuery를 사용하고 있습니다. XQuery는 대형 저장소에서 XML 조각을 선택하는 환상적인 도구이지만 XSL을 사용하여 문서를 변형합니다.

2

XQuery는 대형 데이터 저장소에서 특정 데이터 부분을 검색 할 수 있다는 점에서 SQL과 유사합니다. SQL은 XML 데이터베이스 (MARKLogic, Sedena, Qexo, Qizx/db 등)에 사용됩니다.

MARKLogic은 XDB 서버와 HTTP 서버를 제공합니다. 일반 웹 서버를 사용하고 XDB를 통해 MARKLogic에 연결하거나 HTTP 서버를 사용하고 HTML과 XQuery를 직접 섞어서 사용할 수 있습니다.

MARKLogic의 개발자 서버 (100MB의 문서 허용)를 다운로드하고 사용해 보는 것이 좋습니다.

+0

Oracle 및 Sql Server와 같은 관계형 데이터베이스도 XQuery를 지원합니다. – tuinstoel

3

xml을 html로 처리하려면 서버 또는 라이브러리가 필요합니다. 필자가 생각하기에, XQuery는 XSTL보다 훨씬 복잡합니다. 뿐만 아니라 훨씬 더 깨끗한 언어입니다. 이 웹 사이트는 a nice list of XQuery processors입니다.

1

웹 사이트 개발 환경에서 XQuery를 사용하는 많은 시나리오가있을 수 있습니다 :

생성 페이지를 동적 :

것은 당신이 필요로하는 것 서버 측 코드에서 호출 할 수있는 API를 제공하는 라이브러리. XML 데이터가 저장되는 경우 기존 데이터베이스 전자 또는 파일 시스템에서. 예 : Zorba는 PHP 용 API를 제공하며 Java 용 XQuery API 등이 있습니다.

XML 데이터가 XQuery를 지원하는 XML 데이터베이스 서버에 저장된 경우 서버에 XQuery 쿼리를 실행합니다 결과를 다시 얻으십시오. 이 카테고리에는 많은 오픈 소스 및 상용 제품이 있습니다. BaseX는 오픈 소스 예제입니다. 정적

생성 페이지 :

당신은 XML 데이터에서 정적 HTML 페이지의 일부를 생성 할 수 있습니다. 이 경우 명령 줄 XQuery 유틸리티 (예 : Zorba, Saxon, BaseX)를 실행할 수 있으며 다른 많은 도구는 이러한 CLI 도구를 제공합니다. 또는 API를 사용하여 자신의 스크립트에서 수행 할 수도 있습니다.

그런 다음 XML 데이터가 변경 될 때마다 이러한 명령 또는 스크립트를 실행하도록 빌드 시스템에서 규칙을 정의합니다.

정적 및 동적 방식 모두에서 XQuery가 템플릿 시스템과 함께 재생되도록 환경을 설정할 수 있습니다. 예를 들어 XQuery로 전체 HTML 페이지를 생성하는 대신 XML을 기반으로 HTML 세그먼트를 생성 한 다음 템플릿에 플러그인하십시오.

위의 경우는 HTML을 XML 변환에 대해이지만, XQuery는 웹 개발 과정에서 다른 방법으로 사용할 수 있습니다

는 변환 이외의 사용합니다. XML 문서를 수정하는 것이 유용하다는 것을 알 수 있습니다. 긴 XML 문서가 있고 필드 값을 수정하거나 필드 또는 속성을 추가하려는 경우 XQuery Update Facility 확장을 사용하여이를 달성 할 수 있습니다.

희망이 도움이됩니다. 저는 여러분의 모범에 대해 논하지 않았습니다.

관련 문제