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

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

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

Непрочитанное сообщение mr. brightside » 2013-10-01 11:54:09

Добрый день, уважаемые.

Поставлена задача генерировать вывод 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

Заранее спасибо за ответы!
Только FreeBSD, только хардкор

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

verwolfdotss
проходил мимо
Сообщения: 2
Зарегистрирован: 2013-10-02 17:45:56

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

Непрочитанное сообщение verwolfdotss » 2013-10-02 17:53:49

На самом деле здесь какое то не понимание.
Как XQuery, так и XPath предначначены для процессинга XML на стороне сервера.
Типичный паттерн использования - у нас есть некие XML данные из которых мы с помощью XQuery извлекаем данные и строим например XHTML страничку.

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

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

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

Непрочитанное сообщение mr. brightside » 2013-10-03 0:41:07

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

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

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

Аватара пользователя
mr. brightside
сержант
Сообщения: 260
Зарегистрирован: 2010-04-17 17:32:39
Откуда: Saint-Petersburg

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

Непрочитанное сообщение mr. brightside » 2013-10-08 11:53:37

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)
Только FreeBSD, только хардкор