Bonjour,
j'ai réessayé mais je me heurte à une erreur dans Xpath.
Sous XMLSpy, la transformation se passe sans problème, mais via Xerces Ou Xalan 2_7_0 ça joue pas.
Il semblerait que c'est le mm problème :
la résolution du choose avec le test < ....qui pose problème :
SI quelqu'un peut m'aider , merci. beaucoup.
Car après ça j'aimerai bien aller vers XSL-FO....
Bon WE à tous
<xsl:choose>
<xsl:when test="substring($etapeprec/ALTITUDE,1,4) < substring($etape/ALTITUDE,1,4)">
<xsl:value-of select="$cumul + substring($etape/ALTITUDE,1,4) - substring($etapeprec/ALTITUDE,1,4)"></xsl:value-of>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$cumul"></xsl:value-of>
</xsl:otherwise>
</xsl:choose>
Erreur Xalan :
------------------
file:/c:/temp/temp2.xsl; N░ de ligne41; N░ de colonne-1; Erreur XSLT (javax.xml. transform.TransformerException): Erreur inconnue dans XPath.
Erreur xerces-2_6_2 : du style "Node ne peut etre converti... "
-----------------
XML :
<?xml version="1.0" encoding="windows-1252"?>
<RANDONNEE>
<ETAPE>
<POSITION>44.755566,6.792111</POSITION>
<ALTITUDE>1360.000000</ALTITUDE>
</ETAPE>
<ETAPE>
<POSITION>44.754704,6.792648</POSITION>
<ALTITUDE>1374.687988</ALTITUDE>
</ETAPE>
<ETAPE>
<POSITION>44.754021,6.793101</POSITION>
<ALTITUDE>1401.425537</ALTITUDE>
</ETAPE>
<ETAPE>
<POSITION>44.753437,6.792865</POSITION>
<ALTITUDE>1424.439941</ALTITUDE>
</ETAPE>
<ETAPE>
<POSITION>44.753113,6.791966</POSITION>
<ALTITUDE>1432.319946</ALTITUDE>
</ETAPE>
<ETAPE>
<POSITION>44.752747,6.791520</POSITION>
<ALTITUDE>1444.740845</ALTITUDE>
</ETAPE>
<ETAPE>
<POSITION>44.752060,6.791415</POSITION>
<ALTITUDE>1451.968018</ALTITUDE>
</ETAPE>
</RANDONNEE>
XSL :
<?xml version="1.0"?>
<xsl:stylesheet xmlnssl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml"/>
<xsl:template match="/RANDONNEE">
<xsl:element name="RANDO">
<xsl:call-template name="CALCUL">
<xsl:with-param name="etape" select="//ETAPE[1]"> </xsl:with-param>
</xsl:call-template>
</xsl:element>
</xsl:template>
<xsl:template name="CALCUL">
<xsl:param name="etapeprec"></xsl:param>
<xsl:param name="etape"> </xsl:param>
<xsl:param name="cumul">0</xsl:param>
<xsl:if test="$etapeprec">
<xsl:element name="CUMINTER">
<xsl:value-of select="$cumul"></xsl:value-of>
</xsl:element>
</xsl:if>
<xsl:text>
</xsl:text>
<xsl:if test="$etape">
<xsl:element name="ETAPE">
<xsl:value-of select="substring($etape/ALTITUDE, 1,4)"></xsl:value-of>
</xsl:element>
</xsl:if>
<xsl:choose>
<xsl:when test="$etape">
<xsl:call-template name="CALCUL">
<xsl:with-param name="etapeprec" select="$etape"></xsl:with-param>
<xsl:with-param name="etape" select="$etape/following-sibling::ETAPE[1]"></xsl:with-param>
<xsl:with-param name="cumul">
<xsl:choose>
<xsl:when test="substring($etapeprec/ALTITUDE,1,4) < substring($etape/ALTITUDE,1,4)">
<xsl:value-of select="$cumul + substring($etape/ALTITUDE,1,4) - substring($etapeprec/ALTITUDE,1,4)"></xsl:value-of>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$cumul"></xsl:value-of>
</xsl:otherwise>
</xsl:choose>
</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:element name="CUMUL">
<xsl:value-of select="$cumul"></xsl:value-of>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Partager