Сопоставление записи внутри цикла с записью назначения, которая не является частью области

Извиняюсь за запутанный заголовок, но я не уверен, как лучше это описать. По сути, у меня есть запись в исходной схеме, которая зацикливается для создания 5 разных записей в целевой схеме.

Каждая из этих записей создается на основе значения поля в исходной схеме, чтобы каждая из них могла быть сопоставлена ​​с правильной информацией. В данном случае это адресная информация о покупателе, поставщике и т.д.

Каждая запись в схеме назначения также имеет контактную запись с такими полями, как имя, телефон и т. д.

Моя задача состоит в том, чтобы сопоставить поля из исходной схемы с записью контакта для покупателя в схеме назначения, но не с контактными данными покупателя в исходной схеме.

Структура покупателя (схема назначения)

Сопоставление записи внутри цикла с записью назначения, которая не является частью области

Структура записи в исходной схеме, которая зацикливается. Я пометил поле, значение которого проверяется перед созданием различных записей в схеме назначения, синим цветом вверху, а запись, содержащую контактные данные, синим цветом внизу.

Сопоставление записи внутри цикла с записью назначения, которая не является частью области

Причина, по которой я не могу просто отобразить их, как обычно, заключается в том, что CTALoop1 находится внутри области действия текущей отображаемой записи. Поэтому, когда покупатель сопоставляется, я не могу получить доступ к контактным данным из другого NADLoop1, поскольку они не находятся внутри области цикла.

Мой входной файл содержит следующее: Сопоставление записи внутри цикла с записью назначения, которая не является частью области

Как видите, только NADLoop1 с NAD01 = PO содержит контактные данные, и они не сопоставляются с покупателем, поскольку находятся вне области действия.

Как я могу сопоставить детали CTALoop1 из другой записи, отличной от той, которая зацикливается на схеме назначения? Я не буду использовать сценарии XSLT, но следует сказать, что цикл в настоящее время выполняется с помощью визуального преобразователя, и я знаю, что это может вызвать проблемы при добавлении XSLT.

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

Ответы 1

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

Мне удалось решить это с помощью следующего встроенного XSLT:

<Contact>
    <Name>
        <xsl:value-of select = "/*[local-name()='EFACT_D01B_ORDERS']/*[local-name()='NADLoop1'][*[local-name()='NAD']/*[local-name()='NAD01']='PO']/*[local-name()='CTALoop1']/*[local-name()='CTA']/*[local-name()='C056']/*[local-name()='C05602']"/>
    </Name>
    <Telephone>
    <xsl:value-of select = "/*[local-name()='EFACT_D01B_ORDERS']/*[local-name()='NADLoop1'][*[local-name()='NAD']/*[local-name()='NAD01']='PO']/*[local-name()='CTALoop1']/*[local-name()='COM']/*[local-name()='C076'][*[local-name()='C07602'] = 'TE']/*[local-name()='C07601']"/>
    </Telephone>
    <Email>
<xsl:value-of select = "/*[local-name()='EFACT_D01B_ORDERS']/*[local-name()='NADLoop1'][*[local-name()='NAD']/*[local-name()='NAD01']='PO']/*[local-name()='CTALoop1']/*[local-name()='COM']/*[local-name()='C076'][*[local-name()='C07602'] = 'EM']/*[local-name()='C07601']"/>
    </Email>
</Contact>

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