2012-05-05 2 views
0

Возможно ли сделать ссылку в файле xquery (.xq) переменной?Xquery: превращение ссылки в переменную

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

{ for $x in doc("myfile.xml")/portion/food 
    return <li><a href="#link"></a>{data($x)}</li>}</ul> 

{ for $y in doc("myfile.xml")/portion[contains(., <THIS IS WHERE THE LINK VARIABLE SHOULD GO>)] 

Я знаю, чтобы установить переменную следующим образом, но гавань была в состоянии поставить 2 вместе, чтобы заставить его работать

declare variable $hello := ("Hello World"); 

ответ

0

Ваш вопрос сочетает в себе различные точки, которые должны быть обработаны отдельно. Если я правильно понимаю, вы хотите отобразить результат запроса в веб-браузере и хотите манипулировать DOM страницы результатов после, она была создана при взаимодействии с пользователем. Первая часть (отображение в браузере) isn't the problem, я думаю.

Поскольку браузер просто отображает результат запроса, который сериализуется в файл (точно так же, как это делает простой текстовый редактор), в основном нет никакого «контакта» или «связи» между браузером и движком XQuery, -оценка любого взаимодействия с пользователем. Итак, ваш вопрос в основном задает вопрос о том, как создать такой способ переоценки XQuery на основе настраиваемого параметра.

В документации eXist-db имеется интересный, но простой пример: number-guessing game, для которого требуется оценка входа пользователя на стороне сервера и изменение содержимого страницы для каждой догадки. Он полностью реализован в XQuery, используя обработку сеанса eXist-dbs и возможности XQuery Servlet.

Непросто адаптировать пример угадывания чисел к вашим потребностям. Вам даже не нужно отслеживать количество догадок, поэтому не требуется создавать сеанс на сервере. Достаточно послать выбранный элемент id с запросом (как показывает пример с угаданным номером, используя обычную HTML-форму) и оценить это свойство запроса с помощью функции XQuery. В этом примере функция local:guess отвечает за эту задачу, и она также создает соответствующий HTML-вывод.

Такое решение зависит от возможностей движка XQuery. Возможно, «автономное» решение будет возможно с помощью Javascript, но это, похоже, выходит за рамки вопроса.

+0

Я новичок в программировании и из того, что мог сказать, мне нужно будет использовать eXist для этого, которого я не могу сделать. –

+0

Спасибо за это. Я новичок в программировании и из того, что я могу сказать, мне нужно будет использовать eXist для создания сеанса (но, к сожалению, не использовать eXist, поскольку мне нужно отправить файл кому-то еще, чтобы посмотреть). Javascript может быть вариантом, но я не знаком с ним. Можете ли вы использовать Javascript для Saxon для тестирования? Если вы используете Javascript, вы бы предложили использовать что-то вроде обработчика событий или сеанса страницы или ...? –

+0

Javascript будет «запускать» событие, в зависимости от макета страницы результатов. XQuery Wikibook имеет [пример для поиска на основе Javascript] (http://en.wikibooks.org/wiki/XQuery/Employee_Search), где XQuery используется для обработки запроса на стороне сервера. Таким образом, для этого решения требуется компонент на стороне сервера. Для ** автономного решения ** («[Одностраничное приложение] (http://en.wikipedia.org/wiki/Single-page_application)»?), Вам нужно будет включить исходные данные на страницу результатов, например используя JSON. Но я думаю, что было бы лучше сформулировать новый вопрос по этому вопросу. – tohuwawohu

Смежные вопросы