J'ai une question. Je le fichier xml source suivante:Transformer la structure XML en une autre structure xml avec xslt
Source xml:
<Container>
<DataHeader>
<c id="b" value="TAG" />
<c id="g" value="Info" />
</DataHeader>
<Data>
<Rows>
<r no="1">
<c id="b" value="uid1" uid="T.A.uid1" />
<c id="g" value="uid1|tag1|attr1|somevalue1" />
</r>
<r no="1">
<c id="b" value="uid1" uid="T.A.uid1" />
<c id="g" value="uid1|tag1|attr2|somevalue2" />
</r>
<r no="2">
<c id="b" value="uid1" uid="T.A.uid1" />
<c id="g" value="uid1|tag2|attr3|somevalue3" />
</r>
<r no="10">
<c id="b" value="uid2" uid="T.A.uid2" />
<c id="g" value="uid2|tag1|attr1|somevalue4" />
</r>
<r no="11">
<c id="b" value="uid2" uid="T.A.uid2" />
<c id="g" value="uid2|tag2|attr3|somevalue5" />
</r>
</Rows>
</Data>
</Container>
L'élément 'c' avec id 'g' est important dans le xml source. Ceci est une chaîne concaténée dont les valeurs sont séparées par un '| '. Nous avons besoin de ces valeurs pour faire le xml cible. L'élément 'c' avec l'ID 'b' vous pouvez utiliser pour séparer le 'uid'.
exemple et explantion des valeurs:
<c id="g" value="uid1|tag1|attr1|somevalue1" />
**uid value** | element node | **attribute** | attribute value
**uid1** | tag1 | **attr1** |somevalue1
éléments Al avec le même 'uid' doivent être regroupés en une seule élément "TestTag" (voir XML cible). Les attributs Al (attr1, attr2) ayant le même élément parent (par exemple 'tag1') doivent être ajoutés à 1 élément. Je ne peux utiliser que xslt (xpath) 1.0.
Le fichier xml cible devrait ressembler à ceci après la transformation.
xml cible après transformé par xsl:
<Container>
<TestTag>
<object UID="T.A.uid1" Name="uid1"/>
<tag1 attr1="somevalue1" attr2="somevalue2"/>
<tag2 attr3="*somevalue3"/>
</TestTag>
<TestTag>
<Iobject UID="T.A.uid2" Name="uid2"/>
<tag1 attr1="somevalue4" />
<tag2 attr3="somevalue5"/>
</TestTag>
</Container>
Quelles sont les solutions possibles pour transformer xml source xml pour cibler? J'ai essayé plusieurs choses mais je suis coincé en ce moment.
+1 Bonne première question. Bienvenue sur Stack Overflow! – Tomalak