xsl-list
[Top] [All Lists]

RE: problem with valid Qnames

2005-07-25 02:31:57
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>
--~--



<Prev in Thread] Current Thread [Next in Thread>