bonjour à tous,
j'ai un petit probleme que je n'arrive pas a expliquer:
mon XML:
<?xml version="1.0" encoding="iso-8859-1"?>
<xml-topic>
<description id="502814"/>
<child-classes/>
<topic-classes/>
<topic-instances/>
<relationships>
<association-type id="10047">
<names>
<name>subdivision</name>
<full>subdivision</full>
</names>
<direct-role-type id="10054">
<names>
<name>niveau n</name>
<full>niveau n</full>
</names>
<association id="502100">
<metadata/>
<role-type id="10054">
<names>
<name>niveau n</name>
<full>niveau n</full>
</names>
<role id="506980">
<metadata/>
<topic id="502814">
<names>
<name>voyage groupe Sysma (pour publication papier)</name>
<full>voyage groupe Sysma (pour publication papier)</full>
</names>
</topic>
</role>
</role-type>
</association>
</direct-role-type>
</association-type>
</relationships>
</xml-topic>
mon XSL:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="xml" encoding="ISO-8859-1"/>
<xsl:template match="xml-topic">
<topicMap xmlns:xlink="http://www.w3.org/1999/xlink">
<xsl:apply-templates/>
</topicMap>
</xsl:template>
<xsl:template match="relationships">
<xsl:apply-templates/>
</xsl:template>
<!-- pour chaque type d association -->
<xsl:template match="association-type">
<xsl:variable name="assocTypeId" select="@id"/>
<xsl:variable name="assocTypeName" select="names/name"/>
<assocType name="{$assocTypeName}">
<xsl:apply-templates>
<xsl:with-param name="p_assocTypeId" select="$assocTypeId"/>
<xsl:with-param name="p_assocTypeName" select="$assocTypeName"/>
</xsl:apply-templates>
</assocType>
</xsl:template>
<!-- pour chaque direct-role-type -->
<xsl:template match="direct-role-type">
<xsl:param name="p_assocTypeId"/>
<xsl:param name="p_assocTypeName"/>
<direct name="{names/name}" pid="{$p_assocTypeId}"
pname="{$p_assocTypeName}">
<xsl:apply-templates>
<xsl:with-param name="pp_assocTypeId" select="$p_assocTypeId"/>
<xsl:with-param name="pp_assocTypeName" select="$p_assocTypeName"/>
</xsl:apply-templates>
<xsl:apply-templates/>
</direct>
</xsl:template>
<!-- pour chaque association -->
<xsl:template match="association">
<xsl:param name="pp_assocTypeId"/>
<xsl:param name="pp_assocTypeName"/>
<assoc id="{@id}" position="{position()}">
<pname><xsl:value-of select="$pp_assocTypeId"/></pname>
<pid><xsl:value-of select="$pp_assocTypeName"/></pid>
<xsl:apply-templates/>
</assoc>
</xsl:template>
<!-- pour chaque role type -->
<xsl:template match="role-type">
<xsl:variable name="roleTypeId" select="@id"/>
<xsl:variable name="roleTypeName" select="names/name"/>
<roleType id="{$roleTypeId}" name="{$roleTypeName}">
<xsl:apply-templates>
<xsl:with-param name="p_roleTypeId" select="$roleTypeId"/>
<xsl:with-param name="p_roleTypeName" select="$roleTypeName"/>
</xsl:apply-templates>
</roleType>
</xsl:template>
<!-- pour chaque role -->
<xsl:template match="role">
<xsl:param name="p_roleTypeId"/>
<xsl:param name="p_roleTypeName"/>
<xsl:apply-templates>
<xsl:with-param name="pp_roleTypeId" select="$p_roleTypeId"/>
<xsl:with-param name="pp_roleTypeName" select="p_roleTypeName"/>
</xsl:apply-templates>
</xsl:template>
<!-- pour chaque topic -->
<xsl:template match="topic">
<xsl:param name="pp_roleTypeId"/>
<xsl:param name="pp_roleTypeName"/>
<member roleTypeName="{$pp_roleTypeName}" >
<xsl:value-of select="names/name"/>
</member>
</xsl:template>
<!-- regle vide -->
<xsl:template match="description">
</xsl:template>
<xsl:template match="child-classes">
</xsl:template>
<xsl:template match="topic-classes">
</xsl:template>
<xsl:template match="topic-instances">
</xsl:template>
<xsl:template match="names">
</xsl:template>
<xsl:template match="metadata">
</xsl:template>
<xsl:template match="node()|text()|@*">
</xsl:template>
</xsl:stylesheet>
le résultat:
<?xml version="1.0" encoding="ISO-8859-1"?>
<topicMap xmlns:xlink="http://www.w3.org/1999/xlink">
<assocType name="subdivision">
<direct pname="subdivision" pid="10047" name="niveau n">
<assoc position="4" id="502100">
<pname>10047</pname>
<pid>subdivision</pid>
<roleType name="niveau n" id="10054">
<member roleTypeName="">voyage groupe Sysma (pour publication
papier)</member>
</roleType>
</assoc>
<assoc position="4" id="502100">
<pname/>
<pid/>
<roleType name="niveau n" id="10054">
<member roleTypeName="">voyage groupe Sysma (pour publication
papier)</member>
</roleType>
</assoc>
</direct>
</assocType>
</topicMap>
Le probleme est que dans le fichier source il n'y a qu'un seul noeud
association alors que dans le resultat il y en a deux.
le traitement a l'air d'etre éffectué deux fois :
une fois correctement avec les parametres passés, et la deuxieme fois sans
les parametres.
D'autre part les parametres du template role ne sont pas passés au template
topic ?
qq voit il mes erreurs ?
merci d'avance a ceux qui pourront me répondre.
gilles
--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Wed Jul 30 15:44:28 2003