我有一个结构化的 XML 文件格式,需要映射到更扁平的 XML 格式。通常我会为此创建一个自定义 XSLT 文件并让 BizTalk 映射使用它。然而,我确实喜欢尽可能使用图形地图的想法——直接深入 XSLT 太容易了,但对于那些跟随你的人来说,要快速了解地图的作用就不是那么容易了!
我怀疑可以使用表循环函数和表提取器 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>
总而言之,我需要查看 Trips,从 Vehicle 中获取 VehicleRegistration,键入 VehicleId 并将数据复制到目标模式。
有谁知道是否/如何仅使用 functoids(或者可能是脚本 functoid 中的一个小脚本)来实现这一点?
非常感谢,罗布。