Я загружаю некоторые xml-файлы в базу данных Marklogic, используя импорт Templates и mlcp. Одно пространство имен в этих файлах не позволяет импортировать данные в marklogic, хотя после выполнения команды импорта mlcp не возникает ошибки.
Когда я опускаю это конкретное пространство имен из файлов, данные успешно импортируются.
Можем ли мы использовать любую команду, чтобы опустить пространство имен перед загрузкой данных в marklogic? Пространство имен, создающее проблему: xmlns="http://www.globaltrademanagement_export.com/Shipment".
Образец XML-
<?xml version = "1.0" encoding = "utf-8"?>
<Shipment xmlns:ns10 = "http://www.globaltrademanagement_export.com/ASN"
xmlns:ns9 = "http://www.globaltrademanagement_export.com/BaseType"
xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation = "http://www.globaltrademanagement_export.com/Shipment file:///Y:/MapForce/Projects/GTM2/schema/Shipment.xsd"
xmlns = "http://www.globaltrademanagement_export.com/Shipment">
<ns9:DocumentHeader>
<ns9:DocRef>123</ns9:DocRef>
<ns9:DocCreateDt>2021-10-21T13:01:39.2521396+01:00</ns9:DocCreateDt>
<ns9:DocType>Shipment</ns9:DocType>
</ns9:DocumentHeader>
<ns10:ASN>
<ns9:DocumentHeader>
<ns9:DocRef>123</ns9:DocRef>
<ns9:DocType>ASN</ns9:DocType>
<ns9:DocModified>0000000</ns9:DocModified>
<ns9:DocModifiedDt xsi:nil = "true" />
</ns9:DocumentHeader>
<ns10:OSP xmlns:ns10 = "http://www.globaltrademanagement_export.com/ASN">
<ns9:PartyName />
</ns10:OSP>
<ns10:MultiFreightJobHeader>
<MultiFreightRef xmlns = "http://www.globaltrademanagement_export.com/ASN">SEIIUSJ00010129</MultiFreightRef>
<Dept xmlns = "http://www.globaltrademanagement_export.com/ASN">SEI</Dept>
<Route xmlns = "http://www.globaltrademanagement_export.com/ASN">IUS</Route>
</ns10:MultiFreightJobHeader>
</ns10:ASN>
</Shipment>
Добавлен образец XML в описание вопроса.
xmlns = "globaltrademanagement_export.com/отгрузка Пространство имен, которое необходимо опустить для успешной загрузки файла.
это объявление пространства имен не имеет префикса, поэтому любые элементы, не имеющие префикса пространства имен, будут иметь это пространство имен.
поэтому, если у вас возникли проблемы с обработкой данных в ваших шаблонах TDE, вы можете просто обновить XPath для адресации содержимого в этом пространстве имен, а не удалять его из входного XML.
Я уже определил пространства имен в самом шаблоне. Вот так - <path-namespace> <prefix>xmlns</prefix> <namespace-uri>globaltrademanagement_export.com/Shipment</namespace-uri> </path-namespace> Не уверен , предложил ли ты это ?
Давайте продолжить обсуждение в чате.
Решение, как вы предложили - я добавил пространства имен в сам шаблон. Вот так: <path-namespace> <prefix>xmlns:ns99</prefix> <namespace-uri>globaltrademanagement_export.com/Shipment</namespace-uri> </path-namespace> Затем я добавил префикс (ns99) с этим пространством имен и добавил этот префикс пространства имен для всех элементов, у которых нет префикса пространства имен, и я сделал это в своем определении шаблона. И это сработало успешно!! Спасибо @Madshansen
Решение, предложенное @Madshansen - я добавил пространства имен в сам шаблон. Как это -
<path-namespace>
<prefix>xmlns:ns99</prefix>
<namespace-uri>globaltrademanagement_export.com/Shipment</namespace-uri>
</path-namespace>
Затем я добавил префикс (ns99) к этому пространству имен и добавил этот префикс пространства имен для всех элементов, у которых нет префикса пространства имен, и я сделал это в своем определении шаблона. И это сработало успешно!! Спасибо @Madshansen
Просто обратите внимание, что вам не нужно изменять исходный XML для использования префикса. Эти элементы будут привязаны к этому пространству имен в любом случае. Префикс из исходного XML не обязательно должен совпадать с тем, что вы используете для своего XPath, но NAMESPACE, назначенное префиксу, используемому в вашем XPath, должно соответствовать пространству имен элемента.
Пример входного XML был бы полезен, чтобы понять, является ли проблема неиспользуемым объявлением пространства имен или префиксом пространства имен, у которого нет объявления пространства имен (недопустимый XML)