From: "Philippe LAPLANCHE" <philippe(_dot_)laplanche(_at_)horus-si(_dot_)com>
Reply-To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
To: <xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com>
Subject: [xsl] problem with valid Qnames
Date: Mon, 25 Jul 2005 11:26:05 +0200
Hello
I'd like to transform this:
<?xml version="1.0" encoding="UTF-8"?>
<csvFile>
<line>
<value>Nom</value>
<value>Prenom</value>
<value>Sexe</value>
</line>
<line>
<value>Burke</value>
<value>Eric</value>
<value>H</value>
</line>
<line>
<value>Burke</value>
<value>Jennifer</value>
<value>F</value>
</line>
<line>
<value>Burke</value>
<value>Aidan</value>
<value>H</value>
</line>
</csvFile>
Into this :
<data>
<line>
<nom>Burke</nom>
<prenom>Eric</nom>
<sexe>H</nom>
</line>
<line>
<nom>Burke</nom>
<prenom>Jenifer
...
</line>
...
I'm using this stylesheet :
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<data>
<xsl:apply-templates select="*"/>
</data>
</xsl:template>
<xsl:template match="line">
<xsl:if test="not(position()=1)">
<line>
<xsl:apply-templates select="value"/>
</line>
</xsl:if>
</xsl:template>
<xsl:template match="value">
<xsl:variable name="pos" select="position()"/>
<xsl:variable name="name"
select="//line[1]/value[$pos]"/>
<xsl:element name="$name"><xsl:value-of
select="."/></xsl:element>
</xsl:template>
</xsl:stylesheet>
But I get an error because $name is not a valid Qname
How do I solve this?
Philippe
The name attribute of xsl:element expects a string, not an XPath. If you
want to use an XPath statement you need to enclose it in {}.
<xsl:element name="{$name}">
This is called using an Attribute Value Template (AVT). Not all attributes
allow this though.
Joe
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--