I need to remap an array of objects like this:
<Root>
<ListOfObjs>
<Obj>
<Attr1>0000</Attr1>
<Attr2>Hello!</Attr2>
</Obj>
<Obj>
<Attr1>1111</Attr1>
<Attr2>Hello1!</Attr2>
</Obj>
</ListOfObjs>
</Root>
To an output like this:
<Root>
<Obj1_Attr1>0000</Obj1_Attr1>
<Obj1_Attr2>Hello!</Obj1_Attr2>
<Obj2_Attr1>1111</Obj2_Attr1>
<Obj2_Attr2>Hello1!</Obj2_Attr2>
</Root>
So in my XSD schema I have something like this:
Schema Input
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element name="ListOfObjs">
<xs:complexType>
<xs:sequence>
<xs:element name="Obj">
<xs:complexType>
<xs:sequence>
<xs:element name="Attr1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Attr2">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
Schema output
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element name="Obj1_Attr1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Obj1_Attr2">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Obj2_Attr1">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Obj2_Attr2">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="50"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
In addition I have to evaluate every single value because I found some conditions, like if value=0000 , where the output should be NULL.
What would be the best way to do this?
I'm thinking of developing a custom functoid but I'm not sure it would be the best way, probably it could be done using XSLT inline transforms, can you point me in the best direction?