Forcer un attribut à une valeur
Bonjour,
Je continue mon apprentissage du XSL sur le terrain à devoir changer des flux à la volée en urgence vu le peu de réaction de certains éditeurs.
J'ai un flux XML contenant un bout de code ci-après :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| <actesNGAP>
<acteNGAP action="création" executionDimancheJourFerie="non" executionNuit="non" facturable="oui" gratuit="non" porteeCle="l" valide="oui">
<identifiant>
<emetteur>275560483</emetteur>
</identifiant>
<lettreCle>FTPU</lettreCle>
<coefficient>1</coefficient>
<denombrement>1</denombrement>
<quantite>1</quantite>
<execute>
<date>2019-07-02</date>
<heure>08:52:00</heure>
</execute>
<montant liberal="oui">
<montantTotal>93.53</montantTotal>
<numeroForfaitTechnique>5065</numeroForfaitTechnique>
<numeroAgrementAppareil>83779</numeroAgrementAppareil>
<quantite>1</quantite>
<numeroFacture>1394450810</numeroFacture>
</montant>
</acteNGAP> |
J'ai besoin que mes actes ngap FTPU dont l'activité liberal est à 'oui' soit changé en acte FTPR avec l'attribut liberal à 'non'.
J'ai donc commencé mon bout de code pour rechercher ma balise FTPU et changé l'attribut liberal à "non":
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
<xsl:param name="pLiberalValue" select="non"/>
<xsl:template match="node() | @*">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="//acteNGAP[lettreCle = 'FTPU']/montant/@liberal">
<xsl:attribute name="liberal">
<xsl:value-of select="$pLiberalValue"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet> |
Mais je n'ai pas trouvé pour le moment dans ma rechercher sélectionner que les attribut liberal à "oui" et changer aussi le code FTPU en FTPR. Car je peux avoir des actes FTPU avec liberal à "non" et cela je ne dois pas les toucher.
Merci pour votre aide.