Пропустить пространство имен из файла XML перед загрузкой в ​​базу данных Marklogic

Я загружаю некоторые 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 был бы полезен, чтобы понять, является ли проблема неиспользуемым объявлением пространства имен или префиксом пространства имен, у которого нет объявления пространства имен (недопустимый XML)

Mads Hansen 11.05.2022 13:49

Добавлен образец XML в описание вопроса.

Rashmita Purkayastha 11.05.2022 17:35

xmlns = "globaltrademanagement_export.com/отгрузка Пространство имен, которое необходимо опустить для успешной загрузки файла.

Rashmita Purkayastha 11.05.2022 17:36

это объявление пространства имен не имеет префикса, поэтому любые элементы, не имеющие префикса пространства имен, будут иметь это пространство имен.

Mads Hansen 11.05.2022 17:50

поэтому, если у вас возникли проблемы с обработкой данных в ваших шаблонах TDE, вы можете просто обновить XPath для адресации содержимого в этом пространстве имен, а не удалять его из входного XML.

Mads Hansen 11.05.2022 17:52

Я уже определил пространства имен в самом шаблоне. Вот так - <path-namespace> <prefix>xmlns</prefix> <namespace-uri>globaltrademanagement_export.com/Shipment</na‌​mespace-uri> </path-namespace> Не уверен , предложил ли ты это ?

Rashmita Purkayastha 12.05.2022 10:53

Давайте продолжить обсуждение в чате.

Rashmita Purkayastha 12.05.2022 11:05

Решение, как вы предложили - я добавил пространства имен в сам шаблон. Вот так: <path-namespace> <prefix>xmlns:ns99</prefix> <namespace-uri>globaltrademanagement_export.com/Shipment</na‌​‌​mespace-uri> </path-namespace> Затем я добавил префикс (ns99) с этим пространством имен и добавил этот префикс пространства имен для всех элементов, у которых нет префикса пространства имен, и я сделал это в своем определении шаблона. И это сработало успешно!! Спасибо @Madshansen

Rashmita Purkayastha 12.05.2022 13:32
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
8
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Решение, предложенное @Madshansen - я добавил пространства имен в сам шаблон. Как это -

<path-namespace> 
  <prefix>xmlns:ns99</prefix> 
  <namespace-uri>globaltrademanagement_export.com/Shipment</na‌​mespace-uri> 
</path-namespace> 

Затем я добавил префикс (ns99) к этому пространству имен и добавил этот префикс пространства имен для всех элементов, у которых нет префикса пространства имен, и я сделал это в своем определении шаблона. И это сработало успешно!! Спасибо @Madshansen

Просто обратите внимание, что вам не нужно изменять исходный XML для использования префикса. Эти элементы будут привязаны к этому пространству имен в любом случае. Префикс из исходного XML не обязательно должен совпадать с тем, что вы используете для своего XPath, но NAMESPACE, назначенное префиксу, используемому в вашем XPath, должно соответствовать пространству имен элемента.

Mads Hansen 12.05.2022 18:46

Другие вопросы по теме