From: RHOANG@AAD.FR
Date: 02/12/2003 - 08:20
Bonjour,
J'utilise le MSXML pour transformer du XML en XML.
Cependant, ce processeur réagit mal aux variables dont le contenu est de
type arbre.
Il n'accepte pas la syntaxe <xsl:copy-of select="$Les_MP/Ref_Art"/> lorsque
le remplissage de la variable est complexe.
Je m'expliques :
La syntaxe suivante fonctionne car je passe par "select" pour remplir la
variable.
<xsl:variable name="Les_MP" select="Ref_Art/Libelle"/>
<xsl:copy-of select="$Les_MP/Ref_Art"/>
La syntaxe suivante génère une erreur ( Expression must evaluate to a
node-set. -->$Les_MP<--/Ref_Art ) car j'applique des règles complexes.
Le but est de constituer un arbre dans une variable avec des branches
récupérées suivant les conditions.
Cette variable subira ultérieurement d'autres transformations
<xsl:variable name="Les_MP">
<xsl:for-each select="GROUP/CONF/CONFNODE//CONFNODE[PROPS/PROP[@ID
='CLOS_DATE']='']">
<xsl:variable name="Reference" select="PROPS/PROP[@ID
='OBJECTIDENT']"/>
<xsl:if test="/WINPDM/GROUP/PARTS/PART/PROP[@ID
='ListeRole'][contains(text(),'Listable')]
[../@GUID=concat
('OTI;ARTICLES_SPEC;',$Reference)]">
<xsl:element name="Ref_Art">
<xsl:element name="QuantiteGlobale">
<xsl:value-of select="format-number(PROPS/PROP[@ID
='CalculQuant'],'00.00')"/>
</xsl:element>
<xsl:element name="Libelle">
<xsl:value-of select="PROPS/PROP[@ID
='FUNCTION']"/>
</xsl:element>
<xsl:value-of select="$Reference"/>
</xsl:element>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:copy-of select="$Les_MP/Ref_Art"/>
Pourtant, la variable est bien remplie, puisque <xsl:copy-of select
="$Les_MP"/> me déplie tout son contenu.
Merci pour votre aide et vos idées.
PS: Sachant que SAXON comprend parfaitement cette complexité, mais mon
progiciel ne gère que du MSXML (snif !).
René HOANG--
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)
Archive générée par hypermail 2.1.3 le 28/06/2004 - 11:06 UTC
webmaster@xmlfr.org
|