[XSLT]déplacement de noeuds
Bonjour,
Je débute dans XSLT j'aimerai transormer le document suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| <Services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Service>
<DescriptionContract>
<Name>monservice_4op</Name>
</DescriptionContract>
<InterfaceContract>
<IName>GoogleSearchInterface</IName>
<OpName>doGoogleSearch</OpName>
</InterfaceContract>
</Service>
<Service>
<DescriptionContract/>
<InterfaceContract>
<IName>2</IName>
<OpName>OtherOperation</OpName>
</InterfaceContract>
</Service>
<Service>
<DescriptionContract/>
<InterfaceContract>
<IName>3</IName>
<OpName>Operation3</OpName>
</InterfaceContract>
</Service>
<Service>
<DescriptionContract/>
<InterfaceContract>
<IName>4</IName>
<OpName>Operation4</OpName>
</InterfaceContract>
</Service>
<Service>
<DescriptionContract>
<Name>CustomerVerification</Name>
</DescriptionContract>
<InterfaceContract>
<IName>ICustomer</IName>
<OpName>doValidateMemberShip</OpName>
</InterfaceContract>
</Service>
<Service>
<DescriptionContract/>
<InterfaceContract>
<IName>2</IName>
<OpName>doMySecondOperation</OpName>
</InterfaceContract>
</Service>
<Service>
<DescriptionContract>
<Name>monservice_simple</Name>
</DescriptionContract>
<InterfaceContract>
<IName>TrySearchInterface</IName>
<OpName>doGoogleSearch</OpName>
</InterfaceContract>
</Service>
</Services> |
en:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| <Services xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Service>
<DescriptionContract>
<Name>monservice_4op</Name>
</DescriptionContract>
<InterfaceContract>
<IName>GoogleSearchInterface</IName>
<Operation Contract>
<OpName>doGoogleSearch</OpName>
</Operation Contract>
<Operation Contract>
<OpName>OtherOperation</OpName>
</Operation Contract>
<Operation Contract>
<OpName>Operation3</OpName>
</Operation Contract>
<Operation Contract>
<OpName>Operation4</OpName>
</Operation Contract>
</InterfaceContract>
</Service>
<Service>
<DescriptionContract>
<Name>CustomerVerification</Name>
</DescriptionContract>
<InterfaceContract>
<IName>ICustomer</IName>
<Operation Contract>
<OpName>doValidateMemberShip</OpName>
</Operation Contract>
<Operation Contract>
<OpName>doMySecondOperation</OpName>
</Operation Contract>
</InterfaceContract>
</Service>
<Service>
<DescriptionContract>
<Name>monservice_simple</Name>
</DescriptionContract>
<InterfaceContract>
<IName>TrySearchInterface</IName>
<OpName>doGoogleSearch</OpName>
</InterfaceContract>
</Service>
</Services> |
C'est à dire:
1°) Seul les noeuds qui ont Service/DescriptionContract/Name != null sont des véritables Service
2°) Pour les noeuds Service qui ne respecte pas 1°, on récupère le nom de l'opération et on l'ajoute en tant que nouvelle opération dans le premier noeud précèdent qui respecte le 1° (ou IName == plus qu'un seul caractère)
3°) On supprime les noeuds du 2°
J'espère que quelqu'un pourra m'aider..
Merci. :bug: