Bonjour,
j'ai besoin d'extraire des champs de vcards qui sont incluses dans des fichiers xml.
Mes données ont cette allure :
1 2 3 4 5 6 7 8 9
|
<entity>
<![CDATA[BEGIN:VCARD
VERSION:3.0
FN:Alain Dupont
N:Dupont, Alain
ORG:Association abcd
END:VCARD ]]>
</entity> |
J'aurais besoin d'extraire :
Alain Dupont (Association abcd)
Sachant qu'il peut y avoir bien d'autres champs, et dans n'importe quel ordre, avec ou sans sauts de ligne.
Ma contrainte est d'utiliser xslt 1.0.
Actuellement j'utilise une très longue suite d'instructions qui coupent peu à peu la chaine avec substring-before:
1 2 3 4 5 6 7 8 9 10 11 12
|
<xsl:variable name="temp" select="$aftername1" />
<xsl:variable name="aftername2">
<xsl:choose>
<xsl:when test="contains($temp, 'N:') ">
<xsl:value-of select="substring-before($temp, 'N:')" />
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$temp" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable> |
Mais cette solution marche mal, elle pose une contrainte sur l'ordre des champs et ne marche pas quand j'ai des indications de format :
N;ENCODING=8BIT;CHARSET=UTF-8;LANGUAGE=fr-FR:Dupont Alain
Merci si vous avez des idées.
Partager