Я пытаюсь вставить новые элементы в XML-документ с помощью BaseX.
declare variable $part external;
insert nodes $part as first into db:open("PARTDB")/assembly[@name="ZB09010"]
Я использую графический интерфейс BaseX для тестирования и определил переменную $ part (щелкнув значок $).
Если я использую "локальную" переменную, например,
let $up := <Employee Name="Joe">
<Personal>
<SSN>666-66-1234</SSN>
</Personal>
<StaffInfo>
<Position>Doctor</Position>
<AccountableTo>Jeff</AccountableTo>
</StaffInfo>
</Employee>
return
insert node $up as last into doc('office')/Staff
тогда вставка работает правильно, однако с внешней переменной каждый символ, который является зарезервированным символом xml, преобразуется в последовательность escape-символов xml, например. пример: ‹становится
Мне удалось заставить его работать, заключив переменную в функцию xquery: eval ($ part), но мне это кажется хакерским.
Есть ли другой тип, кроме xs: string, который я должен использовать для предотвращения перевода? Или есть какая-то функция, которую мне нужно использовать с внешней переменной, чтобы предотвратить перевод. Я также попытался обернуть содержимое xml $ part с помощью CDATA, но xml все равно был преобразован в escape-символы.