В настоящее время я работаю с eXist-db в качестве базы данных XML / TEI и Angular для создания веб-сайта. Код Angular запрашивает данные у eXist-db, и я решил заставить eXist-db отвечать JSON. Я предполагал, что JSON является наиболее подходящим форматом данных для этой задачи.
Я использую следующий код XQuery для создания JSON из фиксированного файла XML (в настоящее время я только начинаю / тестирую все это) вeXist-db:
xquery version "3.0";
declare namespace output = "http://www.w3.org/2010/xslt-xquery-serialization";
declare option output:method "json";
declare option output:media-type "application/json";
let $doc := doc("/db/data/Drucktexte/playground/Test_Angular_ngFor.xml")
return
<result>{$doc}</result>
Моя проблема: в XML есть, например,
узлы, которые в основном содержат текст. И могут быть другие подузлы, встроенные в это текстовое содержимое узла
. В XML порядок текста и других узлов является последовательным и, следовательно, понятным.
Ниже показан некоторый XML с двумя
узлами. Единственное различие между этими двумя
узлами заключается в порядке их подузлов - например, появление :
<TEI>
<p n="1">The first text fragment
<app>The first app fragment</app>
The second text fragment
<app>The second app fragment</app>
The third text fragment
<pagebreak/>
The fourth text fragment
<app>The third app fragment</app>
</p>
<p n="2">The first text fragment
<app>The first app fragment</app>
The second text fragment
<pagebreak/>
The third text fragment
<app>The second app fragment</app>
The fourth text fragment
<app>The third app fragment</app>
</p>
Когда XML преобразуется в JSON,Я получаю изолированные массивы одинаковых типов узлов. В настоящее время я не вижу, как я могу восстановить правильный порядок этих элементов массива, чтобы отобразить все эти элементы / узлы на веб-сайте в правильном порядке. После преобразования верхнего XML в JSON оба узла
выглядят одинаково:
[
{
"@n": "1",
"#text": [
"The first text fragment",
"The second text fragment",
"The third text fragment",
"The fourth text fragment"
],
"app": [
"The first app fragment",
"The second app fragment",
"The third app fragment"
],
"pagebreak": []
},
{
"@n": "2",
"#text": [
"The first text fragment",
"The second text fragment",
"The third text fragment",
"The fourth text fragment"
],
"app": [
"The first app fragment",
"The second app fragment",
"The third app fragment"
],
"pagebreak": []
}]
В настоящее время я не могу определить, после какого фрагмента текста должен быть вставлен узел разрыва страницыкаждый
. Я провел некоторое исследование по этой проблеме XML в JSON, но не смог найти ничего полезного. С другой стороны, я не могу себе представить, что я первый, кто столкнулся с такой проблемой.
Я думал о добавлении некоторых данных в JSON, которые представляют структуру всех узлов и подузлов, но я думаю, что тамдолжно быть более элегантным способом.
Так что любая помощь приветствуется. Заранее большое спасибо.