logo       

Re: Problème d'utilisation de l'instruction <xsl:template >: msg#00221

text.xml.french.tech

Subject: Re: Problème d'utilisation de l'instruction <xsl:template >

> Bonjour tout le monde,

bonjour

>
> Je crois que j'ai un sérieux problème d'utilisation des fonctions
> <xsl:template match="Pattern"> et <xsl:apply-templates>!!!

je crois que le problème est ailleurs :)
(Par ailleurs, la spécification est bien faite,
elle doit être lue...)

Vous produisez
une chaine de caractères via
<xsl:apply-templates select="DATE"/>
et
un element racine via
<p><b>....

donc vous aurez :

<?xml version="1.0"?>
05-12-2000<p xmlns:fo ...

or ce n'est pas la définition d'un document bien formé :

http://www.w3.org/TR/2004/REC-xml-20040204/#sec-well-formed


quelques remarques :
- votre xml n'est pas valide (sémantiquement) ! il y a une incohérence
entre la DTD et le contenu
- votre xsl ne l'est pas non plus ! vous définissez un encodage UTF-8
et utilisz des accents é
- vous définissez 2 fois la même règle.
<xsl:template match="FILM">
C'est parfaitement légal, mais il n'y a pas d'élément discriminant
sur lequel le processeur peut se baser, donc il prendre le dernier.
Le premier ne sera pas appelé.

cordialement



--
XPath free testing software : http://lantern.sourceforge.net
Frédéric Laurent http://www.opikanoba.org



> Ou j'ai mal compris son utilisation ou tout simplement je ne sais pas
> l'utiliser.
>
> Par exemple, j'ai un document XML suivant:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!DOCTYPE FILM [
> <!ELEMENT FILM (TITRE,AUTEUR,ANNEE,RESUME)>
> <!ELEMENT TITRE (#PCDATA)>
> <!ELEMENT AUTEUR (#PCDATA)>
> <!ELEMENT DATE (#PCDATA)>
> <!ELEMENT RESUME (#PCDATA)>
> ]>
> <FILM>
> <TITRE>Titanic</TITRE>
> <AUTEUR>James CAMEROON</AUTEUR>
> <DATE>05-12-2000</DATE>
> <RESUME>Film relatant l'accident du plus grand paquebot du monde
> TITANIC</RESUME>
> </FILM>
> Et j'ai écrit cette feuille de style tout simple pour extraire les données
> textuelles de l'arbre XML ci-dessus:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
> xmlns:fo="http://www.w3.org/1999/XSL/Format";>
>
> <xsl:template match="FILM">
> <p>
> <h1><i><xsl:value-of select="TITRE"/></i></h1>
> </p>
> <i><xsl:value-of select="ANNEE"/></i>
> <p>
> <xsl:value-of select="AUTEUR"/>
> </p>
> <p>
> <h3>Résumé:<xsl:value-of select="RESUME"/></h3>
> </p>
> </xsl:template>
> <xsl:template match="FILM">
> <xsl:apply-templates select="DATE"/>
> <!--Date au format dd/mm/yyyy-->
> <p>
> <b>Le film est sorti le <xsl:value-of
> select="concat(substring(DATE,1,2),
> substring(DATE,2.5,4.5),substring(7,10))"/></b>
> </p>
> </xsl:template>
> </xsl:stylesheet>
>
>
>
> Le problème est que chaque fois que je lance les transformations, le
> processeur me sort l'erreur: "
> Node of this type cannot be added." (le noeud ne peut être ajouté dans
> l'arbre résultat...).
>
> Pouvez-vous me donner des conseils d'utilisation de <xsl:template> et
> <xsl:apply-templates>?
>
> Comment je peux les utiliser pour avoir le résultat correct dans ma
> feuille de style ci-haut?
>
> Bonne journée.
>
> Oscar N.
>
>





<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise