2008-11-26 2 views
1

У меня есть структурированный формат XML-файла, который необходимо сопоставить с более плоским XML-форматом. Обычно я создавал для этого пользовательский XSLT-файл и использовал его карту BizTalk. Тем не менее, мне нравится идея использовать графические карты, где это возможно - слишком легко погрузиться прямо в XSLT, но не так просто для тех, кто следит за вами, чтобы быстро понять, что делает карта!BizTalk Looping Functoid

Я подозреваю, что отображение может быть достигнуто с помощью таблицы зацикливание функции и таблицы экстрактор functoid но я пытался в течение нескольких часов и не :(

Примечание: Я не имею никакого контроля над источником XSD - это происходит от третьего лица здесь:.

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
<xs:element name="VehicleTrips"> 
    <xs:annotation> 
     <xs:documentation>Comment describing your root element</xs:documentation> 
    </xs:annotation> 
    <xs:complexType> 
     <xs:sequence maxOccurs="unbounded"> 
      <xs:element name="Vehicle"> 
       <xs:complexType> 
        <xs:sequence> 
         <xs:element name="VehicleID"/> 
         <xs:element name="VehicleRegistration"/> 
        </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
      <xs:element name="Trips"> 
       <xs:complexType> 
        <xs:sequence maxOccurs="unbounded"> 
         <xs:element name="VehicleId"/> 
         <xs:element name="Distance"/> 
         <xs:element name="Duration"/> 
        </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

... и вот цель XSD:

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> 
<xs:element name="Trips"> 
    <xs:annotation> 
     <xs:documentation>Comment describing your root element</xs:documentation> 
    </xs:annotation> 
    <xs:complexType> 
     <xs:sequence maxOccurs="unbounded"> 
      <xs:element name="VehicleRegistration"/> 
      <xs:element name="Distance"/> 
      <xs:element name="Duration"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

Подводя итог, я должен изучить поездки, захватить VehicleRegistration от Vehicle, с ключом VehicleId и скопировать данные в целевую схему.

Кто-нибудь знает, может ли это быть достигнуто, используя только фунтоиды (или, возможно, небольшой скрипт в функционале скриптов)?

Большое спасибо, Rob.

+0

Привет, Роб, не могли бы вы привести пример ввода xml. – 2008-11-26 22:35:50

ответ

0

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

Исходная схема, показанная выше, заставляет выглядеть так, как будто вы можете сделать это только с помощью петлевого функтоида, поскольку у вас может быть несколько.

0

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

ie.

<Trips> 
    <Trip> 
     <Registration /> 
     <Distance /> 
     <Duration /> 
    </Trip> 
</Trips> 

Если вы не используете XSLT, я не думаю, что вы можете поддерживать порядок последовательности элементов в противном случае.

 Смежные вопросы

  • Нет связанных вопросов^_^