Возможно ли использовать xi: include для импорта результатов внешнего документа xquery или для вызова xquery из XML-документа? Я знаю, что на самом деле это не обязательно, но у меня есть ситуация, когда серия xml-документов была создана и оформлена с использованием xslt. Я хотел бы захватить небольшое подмножество из xml-документов (одна строка из нескольких версий стихотворения) и отобразить его внизу страницы. Мой xquery работает, но я пытаюсь понять, как лучше всего справиться с следующим шагом.Импорт результатов XQuery в XML-документ с использованием xi: include
Это XQuery:
let $q:=collection('file:/users/matt/Documents/tei/Lydgate/Quis_Dabit?select=*.xml')
for $y in $q//tei:surface
let $g := concat(substring($y/tei:graphic/@url,1,string-length($y/tei:graphic/@url)-4), '.html')
let $z := $y/tei:zone[@n="EETS.QD.4"]
let $l := $z/tei:line[@n="l.1"]
let $o := $l/tei:orig/node()
where ($z//tei:line/@n = "l.1")
return <item><ref target="{$g}">{$o}</ref></item>
`захватывает все XML-документы и формирует этот результат:
<item>
<ref target="British_Library_Harley_2255_f67r.html">
<hi xmlns="http://www.tei-c.org/ns/1.0" rend="blue_pilcrow">¶</hi>O alle ye douħtren of <hi xmlns="http://www.tei-c.org/ns/1.0" rend="underline">ierusaleem</hi>
</ref>
</item>
<item>
<ref target="Jesus_Q_G_8_f20r.html">
<hi xmlns="http://www.tei-c.org/ns/1.0">A</hi>ll the <hi xmlns="http://www.tei-c.org/ns/1.0" rend="underline">doughtren </hi>of <hi xmlns="http://www.tei-c.org/ns/1.0" rend="underline">Ier</hi>
<hi xmlns="http://www.tei-c.org/ns/1.0" rend="underline">usa</hi>
<hi xmlns="http://www.tei-c.org/ns/1.0" rend="underline">l</hi>
<hi xmlns="http://www.tei-c.org/ns/1.0" rend="underline">e</hi>
<hi xmlns="http://www.tei-c.org/ns/1.0" rend="underline">m</hi> .</ref>
</item>
<item>
<ref target="Laud_683_f78v.html">O alle ẏe douhtren of jerusaleem</ref>
</item>
Потому что у меня есть структура Xsl там, я хочу, чтобы стиль его с теми же Xsl листов Я делаю статические xml-страницы. Что означает, что я хотел бы быть в состоянии сделать что-то вроде этого:
<TEI xmlns="http://www.tei-c.org/ns/1.0" version="5.0" xmlns:xi="http://www.w3.org/2001/XInclude">
<teiHeader>
<fileDesc>
<titleStmt>
<title/>
</titleStmt>
<publicationStmt>
<p/>>
</publicationStmt>
<sourceDesc>
<p/>
</sourceDesc>
</fileDesc>
</teiHeader>
<text>
<body>
<list>
<xi:include href="test.xq"/>
</list>
</body>
</text>
с моей XSL таблицы стилей декларации в верхней части. Я знаю, что это возможно, если я поместил все в базу данных eXist, но я бы предпочел не добавлять всю платформу только ради этого поиска, если я могу помочь. Кроме того, если я буду лаять совершенно неправильное дерево, я был бы признателен, если бы кто-то мог сообщить мне об этом.
Стрелять, я боялся этого. Я могу сгенерировать все xml в xquery и использовать php для применения таблицы стилей, я думаю. Благодаря! – medievalmatt
Абель дает вам различные технические способы достижения желаемого. В более общем плане вам необходимо настроить «конвейер обработки». Обычно с XML вы хотите, чтобы контент проходил через разные этапы, на разных этапах, причем один из них был инъекцией результата оценки XQuery. Последнее: вероятно, больше, чем внешний анализируемый объект или элемент XInclude, вероятно, это были инструкции для обработки. В любом случае, это должно быть совместное решение между дизайном вашего XML и тем, как он обрабатывается вашей платформой/системой. –
@medievalmatt, выше, florent дает хорошее объяснение конвейера обработки, который, если у вас есть возможность создать его (проверьте [XML-трубопровод] (https://en.wikipedia.org/wiki/XML_pipeline) и [XML Pipeline Definition Language Version 1.0] (http://www.w3.org/TR/xml-pipeline/)) - хороший способ. – Abel