Страница 1 из 1

Как заставить Xquery работать?

Добавлено: 2013-10-01 11:54:09
mr. brightside
Добрый день, уважаемые.

Поставлена задача генерировать вывод HTML с использование XQuery.

Почитал документацию, примеры скриптов, в общем не очень сложно. До этого стравливал XML и XSLT и я думал, что тут сложностей не будет.

Но, неожиданная проблема покоробила меня. Мой браузер не выводит то, что я хочу - он выводит код. Возможно, мне требуется модуль для того, чтобы .xq/.xql обрабатывался?

Вот один из использованных мною примеров:

books.xml:

Код: Выделить всё

<terms>
   <term>
      <term-name>Object</term-name>
      <definition>A set of ideas,
 
      </definition>
   </term>
   <term>
      <term-name>Organization</term-name>
      <definition>A unit consisting of people and processes established
      to perform some functions</definition>
   </term>
   <term>
      <term-name>Organization</term-name>
      <definition>BankOfAmerica</definition>
   </term>
</terms>
books.xq или books.xql:

Код: Выделить всё

xquery version "1.0";
declare option exist:serialize "method=xhtml media-type=text/html";
 
let $my-doc := doc('file://c:/xml/books.xml')
return
<html>
    <head>
        <title>Terms</title>
    </head>
    <body>
    <table border="1">
    <thead>
      <tr>
          <th>Term</th> 
          <th>Definition</th>
          <th>price</th>
      </tr>
    </thead>
    <tbody>{
 
         for $term in $my-doc/terms/term
 
           <td>{$term/term-name/text()}</td>
           <td>{$term/definition/text()}</td>
<td>{$term/term-name/text()}</td>
<td>{$term/definition/text()}</td>
<td>{$term/price/text()}</td>
         </tr>
       }</tbody>
     </table>
   </body>
</html>
при попытке открыть файл .xq браузер выводит мне сам код.

При этом, я установил себе eXist и открыл эти файлы в нем. Там я получаю требуемый вывод, но мне то нужно в пользовательскую среду выводить информацию.

Прочитанные ссылки по теме:

XQuery
http://www.xqib.org/js/
http://www.w3schools.com/xquery/xquery_functions.asp
http://stackoverflow.com/questions/1617 ... -js-variab
http://exist-db.org/exist/apps/demo/exa ... asics.html
http://en.wikibooks.org/wiki/XQuery
http://stackoverflow.com/questions/1688 ... javascript
http://stackoverflow.com/questions/1715 ... -html?rq=1
http://habrahabr.ru/post/65383/
http://www.stylusstudio.com/xquery_tutorial.html
http://www.gnu.org/software/qexo/XQ-Gen-XML.html

Заранее спасибо за ответы!

Re: Как заставить Xquery работать?

Добавлено: 2013-10-02 17:53:49
verwolfdotss
На самом деле здесь какое то не понимание.
Как XQuery, так и XPath предначначены для процессинга XML на стороне сервера.
Типичный паттерн использования - у нас есть некие XML данные из которых мы с помощью XQuery извлекаем данные и строим например XHTML страничку.

Если вы все же хотите использовать XQuery в браузере - посморите в сторону XQIB.

Re: Как заставить Xquery работать?

Добавлено: 2013-10-03 0:41:07
mr. brightside
verwolfdotss писал(а):На самом деле здесь какое то не понимание.
Как XQuery, так и XPath предначначены для процессинга XML на стороне сервера.
Типичный паттерн использования - у нас есть некие XML данные из которых мы с помощью XQuery извлекаем данные и строим например XHTML страничку.

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

Например, стравливать XML и XSLT можно без закидывания чего то дополнительного. Вот я и подумал, что может я ошибся где то в семантике, но, видимо, нет.

Re: Как заставить Xquery работать?

Добавлено: 2013-10-08 11:53:37
mr. brightside
verwolfdotss писал(а):На самом деле здесь какое то не понимание.
Как XQuery, так и XPath предначначены для процессинга XML на стороне сервера.
Типичный паттерн использования - у нас есть некие XML данные из которых мы с помощью XQuery извлекаем данные и строим например XHTML страничку.

Если вы все же хотите использовать XQuery в браузере - посморите в сторону XQIB.
Посмотрел, попробовал использоватьь XQIB.

Скачал XQIB JS 0.8 Beta, воспользовался этим примером.
Заработало.

Теперь хочу построить на основе XML страничку с помощью JS->XQuery:

Код: Выделить всё

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>   
		<title>XQIB: Sample page</title>
		<meta charset="UTF-8"/>
		<script type="text/javascript" src="mxqueryjs/mxqueryjs.nocache.js"></script>
		<script type="application/xquery">
			declare sequential function local:listener($loc, $evtObj) {
				for $x in doc("fronts_19.xml")/root/item
				where $x/front_model = 19
				order by $x/front_drill
				return <b>$x/front_drill</b>;
			};
			b:addEventListener(b:dom()//input[@id="myButton"], "onclick", local:listener#2)
		</script>
	</head>
	<body>
    	<h1>Onclick Event</h1>
		<input id="myButton" type="button" value="Click me"/>
	</body>
</html>
Выдаёт, что не может считать XML-файл fronts_19.xml:

Код: Выделить всё

MXQuery successfully compiled, but output the following error during execution:
err:FODC0002 Getting your resource at file:///E:/Work/fronts_19.xml failed.

Unknown.anonymous(Unknown Source)
Unknown.anonymous(Unknown Source)
Unknown.anonymous(Unknown Source)