xsl: analize-string qui me chatouille
Bonjour,
je reviens vers vous pour un souci de transformation.
j'ai des données xml qui ne sont pas toutes bien remplies (c'est pas bien), je souhaite donner un dormat spécifique à celle qui correspondent à mon critèer et laisser les autres telles quelles sont avec pourquoi pas un nom d'attribut "erreur", ùmais je n'y parviens pas et pourtant ça semble tout bête.
Les données correctes sont sous ce format:
Code:
1 2
| <extent>1:50.000</extent>
<extent>1:1.000.000</extent> |
il y en a qui sont mal remplies:
Code:
1 2
| <extent> échelle graphique</extent>
<extent></extent> |
moi je veux obtenir pour les bien remplies ceci:
Code:
1 2
| <extent ext="50.000"/>
<extent ext="1.000.000"/> |
et pour toutes les autres:
Code:
1 2
| <extent erreur="échelle graphique"/>
<extent erreur=""25.000""/> |
je comptais sur la fonction analize-string mais je n'obtient pas ce que je veux
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| <xsl:template match="ns:binding[@name='extent']">
<xsl:for-each select="current()">
<xsl:analyze-string select="." regex="(.*):(.*)">
<xsl:matching-substring>
<extent>
<xsl:attribute name="ext">
<xsl:value-of select="regex-group(2)"/>
</xsl:attribute>
</extent>
</xsl:matching-substring>
<xsl:non-matching-substring>
<extent>
<xsl:attribute name="erreur">
<xsl:value-of select="."/>
</xsl:attribute>
</extent>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:for-each>
</xsl:template> |
pourriez-vous me dire où je rate un truc? a priori c'est dans mon regex mais je patauge un peu.
Merci pour votre aide précieuse.