Récupérer le PATH d'un élément //LINE [XSLT 2.0] - XML/XSL - Programmation
MarshPosté le 20-04-2011 à 10:51:58
Bonjour,
Actuellement j'ai une feuille de style qui parse un fichier XML et si il y a des erreurs ressort un rapport où je décris l'erreur mais je voudrais aussi reprendre le PATH de l'élément en erreur.
Je m'exprime peut être mal, mais avec un exemple cela ira mieux.
Dans l'exemple suivant le vais parser le contenu des éléments LINE et si un des éléments est en erreur je vais générer un message d'erreur où j'aimerais récupérer le PATH de l'élément LINE en erreur dans ce cas "//DOCUMENT/CHAPITRE/PARA[2]/LINE[1]"
Est-ce que quelqu'un à une solution ou un début d'idéé à me donner car je ne trouve pas de solution pour récupérer le chemin entier de l'élément en erreur.
Marsh Posté le 20-04-2011 à 10:51:58
Bonjour,
Actuellement j'ai une feuille de style qui parse un fichier XML et si il y a des erreurs ressort un rapport où je décris l'erreur mais je voudrais aussi reprendre le PATH de l'élément en erreur.
Je m'exprime peut être mal, mais avec un exemple cela ira mieux.
Dans l'exemple suivant le vais parser le contenu des éléments LINE et si un des éléments est en erreur je vais générer un message d'erreur où j'aimerais récupérer le PATH de l'élément LINE en erreur dans ce cas "//DOCUMENT/CHAPITRE/PARA[2]/LINE[1]"
Est-ce que quelqu'un à une solution ou un début d'idéé à me donner car je ne trouve pas de solution pour récupérer le chemin entier de l'élément en erreur.
<?xml version="1.0" encoding="utf-8"?>
<DOCUMENT>
<CHAPITRE>
<ARTICLE>
<PARA>
<LINE>fleche</LINE>
<LINE>leopard</LINE>
</PARA>
<PARA>
<LINE>Soleil</LINE>
<LINE>test</LINE>
</PARA>
</ARTICLE>
</CHAPITRE>
</DOCUMENT>
<xsl:if test="//LINE = 'test'">
<xsl:element name="ERROR">
<xsl:attribute name="CODE">
<xsl:text>ERROR_0100</xsl:text>
</xsl:attribute>
<xsl:attribute name="PATH">
<xsl:copy-of select="fn:name(fn:current())"/>
</xsl:attribute>
<xsl:attribute name="DESCRIPTION">
<xsl:text>ERREUR</xsl:text>
</xsl:attribute>
</xsl:element>
</xsl:if>
Merci d'avance pour vos réponses