Я создал .xml-файл и шаблон для извлечения некоторых данных, но отображаются только атрибуты.
Это мой .xml-тестовый файл:
<user id="1234" email="[email protected]" password="1234">
<type>Human</type>
<notes>
<note reference="5432" id="753" xmlns="http://testnamespace.de/note">
<text>example</text>
<username>John Doe</username>
<groups>
<group id="42">Avengers</group>
<group id="55">JLA</group>
</groups>
<distinctiveTitle>title</distinctiveTitle>
<personNameInverted>Doe John</personNameInverted>
</note>
</notes>
and here the corresponding template:
import module namespace tde = "http://marklogic.com/xdmp/tde" at "/MarkLogic/tde.xqy";
declare namespace testns = "http://testnamespace.de/note";
let $userNoteTDE:=
<template xmlns="http://marklogic.com/xdmp/tde" xmlns:testns="http://testnamespace.de/note">
<context>/user/notes/testns:note</context>
<rows>
<row>
<schema-name>user</schema-name>
<view-name>notes</view-name>
<columns>
<column>
<name>reference</name>
<scalar-type>string</scalar-type>
<val>@reference</val>
<nullable>true</nullable>
<default>""</default>
</column>
<column>
<name>id</name>
<scalar-type>string</scalar-type>
<val>@id</val>
<nullable>true</nullable>
<default>""</default>
</column>
<column>
<name>text</name>
<scalar-type>string</scalar-type>
<val>text</val>
<nullable>true</nullable>
<default>""</default>
</column>
<column>
<name>username</name>
<scalar-type>string</scalar-type>
<val>username</val>
<nullable>true</nullable>
<default>""</default>
</column>
<column>
<name>distinctiveTitle</name>
<scalar-type>string</scalar-type>
<val>distinctiveTitle</val>
<nullable>true</nullable>
<default>""</default>
</column>
<column>
<name>personNameInverted</name>
<scalar-type>string</scalar-type>
<val>personNameInverted</val>
<nullable>true</nullable>
<default>""</default>
</column>
</columns>
</row>
</rows>
</template>
Я изменил контекст, чтобы использовать правильный (?) Путь и пространство имен (потому что эта часть должна быть вложена в другой шаблон):
<context>/user/notes/testns:note</context>
Если я проверю шаблон с помощью tde: node-data-extract (fn: doc (TESTFILE PATH), $ userNoteTDE), я получаю следующий результат:
{
"TESTFILE PATH": [
{
"row": {
"schema": "user",
"view": "notes",
"data": {
"rownum": "1",
"reference": "5432",
"id": "753",
"text": "",
"username": "",
"distinctiveTitle": "",
"personNameInverted": ""
}
}
}
]
}
Это показывает, что атрибуты отображаются правильно, но каким-то образом значения (текст, имя пользователя, отличительный заголовок, personNameInverted) элементов не работают. Я предполагаю, что значениям нужен более точный путь или выражение, но я не могу найти никакой информации. Если я изменю значение текст, например, на <val>testns:text</val>
в моем шаблоне, я получаю сообщение об ошибке: XDMP-UNBPRFX: (err: XPST0081) Prefix testns не имеет привязки к пространству имен
Итак, каким-то образом элементы не могут использовать объявленное пространство имен, но атрибуты могут.
Также я пропустил раздел <groups>
в моем шаблоне, потому что им нужен был бы контекст сам по себе, это не имеет значения, не так ли?
Заранее благодарим за любую полезную информацию!