Как сопоставить список атрибутов со схемой на основе столбцов с условием в BizTalk?

У меня есть две схемы: одна для входного XML-файла, а вторая для таблицы базы данных.

Ниже приведены исходные данные приведенной выше схемы:

<?xml version = "1.0" encoding = "UTF-8"?>
<?xml-stylesheet type='text/xsl'?> 
<List>
 <Classification domain = "Type">deviceSku</Classification>
 <Classification domain = "Color">(PRODUCT)RED</Classification>
 <Classification domain = "ColorCode">#D82E2E</Classification>
 <Classification domain = "OS">Apple iOS</Classification>
 <Classification domain = "ChargeType">One Time Charge</Classification>
 <Classification domain = "Capacity">128GB</Classification>
</List>

Вышеупомянутый файл является входным файлом xml, который находится в форме списка.

Ниже приведены сценарии создания таблиц, которые выводятся в зависимости от формата столбца.

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[cata_class](
    [ID] [int] IDENTITY(1000,1) NOT NULL,
    [classification_type] [varchar](100) NULL,
    [classification_color] [varchar](100) NULL,
    [classification_colorCode] [varchar](50) NULL,
    [classification_os] [varchar](100) NULL,
    [classification_chargetype] [varchar](100) NULL,
    [classification_capacity] [varchar](100) NULL,  
PRIMARY KEY CLUSTERED 
(
    [ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) 
GO

Согласно вышеуказанному СС. Я хочу добавить значение классификации на основе состояния домена в схеме назначения, поэтому какая функция лучше и как использовать эту функцию?

Ниже приведена схема ввода:

<?xml version = "1.0" encoding = "utf-16"?>
<xs:schema attributeFormDefault = "unqualified" elementFormDefault = "qualified" xmlns:xs = "http://www.w3.org/2001/XMLSchema">
  <xs:element name = "List">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs = "unbounded" name = "Classification">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base = "xs:string">
                <xs:attribute name = "domain" type = "xs:string" use = "required" />
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema> 

Ниже приведена схема вывода:

 <?xml version = "1.0" encoding = "utf-8"?>
<xs:schema xmlns:ns3 = "http://schemas.microsoft.com/Sql/2008/05/Types/Tables/dbo" elementFormDefault = "qualified" targetNamespace = "http://schemas.microsoft.com/Sql/2008/05/Types/Tables/dbo" version = "1.0" xmlns:xs = "http://www.w3.org/2001/XMLSchema">
  <xs:annotation>
    <xs:appinfo>
      <fileNameHint xmlns = "http://schemas.microsoft.com/servicemodel/adapters/metadata/xsd">Table.dbo</fileNameHint>
    </xs:appinfo>
  </xs:annotation>
  <xs:complexType name = "cata_class">
    <xs:sequence>
      <xs:element minOccurs = "0" maxOccurs = "1" name = "ID" nillable = "true" type = "xs:int" />
      <xs:element minOccurs = "0" maxOccurs = "1" name = "classification_type" nillable = "true">
        <xs:simpleType>
          <xs:restriction base = "xs:string">
            <xs:maxLength value = "100" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element minOccurs = "0" maxOccurs = "1" name = "classification_color" nillable = "true">
        <xs:simpleType>
          <xs:restriction base = "xs:string">
            <xs:maxLength value = "100" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element minOccurs = "0" maxOccurs = "1" name = "classification_colorCode" nillable = "true">
        <xs:simpleType>
          <xs:restriction base = "xs:string">
            <xs:maxLength value = "50" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element minOccurs = "0" maxOccurs = "1" name = "classification_os" nillable = "true">
        <xs:simpleType>
          <xs:restriction base = "xs:string">
            <xs:maxLength value = "100" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element minOccurs = "0" maxOccurs = "1" name = "classification_chargetype" nillable = "true">
        <xs:simpleType>
          <xs:restriction base = "xs:string">
            <xs:maxLength value = "100" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element minOccurs = "0" maxOccurs = "1" name = "classification_capacity" nillable = "true">
        <xs:simpleType>
          <xs:restriction base = "xs:string">
            <xs:maxLength value = "100" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:element name = "cata_class" nillable = "true" type = "ns3:cata_class" />
  <xs:complexType name = "ArrayOfcata_class">
    <xs:sequence>
      <xs:element minOccurs = "0" maxOccurs = "unbounded" name = "cata_class" type = "ns3:cata_class" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name = "ArrayOfcata_class" nillable = "true" type = "ns3:ArrayOfcata_class" />
</xs:schema>

Предоставьте входную схему, выходную схему, образец XML-файла и то, что вы пробовали до сих пор. Намекать. Вероятно, вам нужен циклический функтоид, равный функтоид и функтоид отображения значений.

Dijkgraaf 30.01.2023 09:58

@Dijkgraaf Пожалуйста, посмотрите изменения, у вас будет как схема SS, так и образец XML-файла, пожалуйста, отдайте предпочтение первому SS вопроса.

VR_Code 30.01.2023 10:47

Фактические схемы в текстовом формате, отформатированные как блоки кода с ``` вокруг них, а не скриншоты.

Dijkgraaf 30.01.2023 21:13

@Dijkgraaf Я заменяю все ss файлом кода.

VR_Code 31.01.2023 03:27
Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
4
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Нам нужно использовать функцию сопоставления Equal и Value (лестную) в соответствии с приведенным ниже SS:

При равной функциональности нам нужно передать домен для проверки условия, как показано ниже:

и в функции сопоставления значений (льстивости) нам нужно передать равное значение функции в качестве первого входа и узла классификации в качестве второго входа и сопоставить его с узлом схемы назначения.

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

Параметры функции расширения или возвращаемые значения с типом Clr «XmlQualifiedName» не поддерживаются при попытке использовать FILE.ReceivedFileName
Как подключиться к службе SFTP на основе решения учетной записи хранения Azure с помощью BizTalk 2013
Как я могу получить доступ к свойству контекста (имя входящего файла) в преобразовании (пользовательский xslt)?
Есть ли в BizTalk требование, согласно которому входящее сообщение должно быть отправлено?
Использование функции XSLT format-number для округления значения до 2 знаков после запятой
Сопоставление записи внутри цикла с записью назначения, которая не является частью области
Тестирование установки BizTalk SAP
BizTalk WCF-OracleDB (после)опроса(-доступные)-утверждения
Как я могу запустить код, который имеет только асинхронные API без взаимоблокировок, в среде, где я знаю, что пул потоков будет насыщен?
Мастер публикации службы Biztalk WCF