Using xml/xsd below, I want a mapped single record.
45252|Document1| Document2| Document3| Document4|Document5
Note, Document can have 0 to 5 occurrences per record.
How do I do this with XML Extract. Presently, it just grabs the last occurence of Document. For example, 45252|Document5.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="XCars">
<xs:complexType>
<xs:sequence>
<xs:element ref="Car" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Car">
<xs:complexType>
<xs:sequence>
<xs:element ref="SerialNumber" />
<xs:element ref="Document" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DocumentNumber" type="xs:string" />
<xs:element name="SerialNumber" type="xs:string" />
<XCars>
<Car>
<SerialNumber>12345</SerialNumber>
<Document>
<DocumentNumber>Document1</DocumentNumber>
</Document>
<Document>
<DocumentNumber>Document2</DocumentNumber>
</Document>
<Document>
<DocumentNumber>Document3</DocumentNumber>
</Document>
<Document>
<DocumentNumber>Document4</DocumentNumber>
</Document>
<Document>
<DocumentNumber>Document5</DocumentNumber>
</Document>
</Car>
/<XCars>
45252|Document1| Document2| Document3| Document4|Document5
Note, Document can have 0 to 5 occurrences per record.
How do I do this with XML Extract. Presently, it just grabs the last occurence of Document. For example, 45252|Document5.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="XCars">
<xs:complexType>
<xs:sequence>
<xs:element ref="Car" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Car">
<xs:complexType>
<xs:sequence>
<xs:element ref="SerialNumber" />
<xs:element ref="Document" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="DocumentNumber" type="xs:string" />
<xs:element name="SerialNumber" type="xs:string" />
<XCars>
<Car>
<SerialNumber>12345</SerialNumber>
<Document>
<DocumentNumber>Document1</DocumentNumber>
</Document>
<Document>
<DocumentNumber>Document2</DocumentNumber>
</Document>
<Document>
<DocumentNumber>Document3</DocumentNumber>
</Document>
<Document>
<DocumentNumber>Document4</DocumentNumber>
</Document>
<Document>
<DocumentNumber>Document5</DocumentNumber>
</Document>
</Car>
/<XCars>
-
Hello,
it is impossible to do it in one step. But you can read the file with following mapping:<Mappings>
<Mapping element="XCars">
<Mapping element="Car">
<Mapping element="Document" outPort="0"
xmlFields="DocumentNumber;../SerialNumber"
cloverFields="Document;SerialNumber"/>
</Mapping>
</Mapping>
</Mappings>
and then join all records with the same SerialNumber with the Denormalizer component.
Please sign in to leave a comment.
Comments 1