Re: [xsl] using attribute value as an attribute name OR using element value as an attribute name

Subject: Re: [xsl] using attribute value as an attribute name OR using element value as an attribute name
From: Joerg Heinicke <joerg.heinicke@xxxxxx>
Date: Sun, 22 Sep 2002 01:48:06 +0200
Hello Ross,

ross@xxxxxxxxxxxxx wrote:
Dave,

Thank you again for helping me with this. Have you written a book or
anything I can buy? :-)

We are getting very close. I can output the name of each column, but somehow
I am having trouble figuring how to actually use that column name as the
data attribute name. Your original syntax:

<xsl:value-of select="$row/@*[name()=.]">

Yes, this seems to be wrong. It's true for every attribute, whose value is the same as its name, e.g. test="test". Both name() and . refer to the attribute.


...didn't didn't seem to work (I get no data). And yet if I do <xsl:value-of
select="." /> I do get the column names. Here's what I have so far, which is
basically a straight copy of what you gave me.

	<xsl:variable name="columns"
select="/root/config/columnList/column/@name"/>

This will only store the value of the first column in the variable (a string). Change it to
<xsl:variable name="columns" select="/root/config/columnList/column"/>
to store a node set of the columns.


<table width="95%" class="reporttable" cellpadding="2" cellspacing="2">
  <xsl:for-each select="/root/row">
    <tr>
      <xsl:variable name="aRow" select="."/>
      <xsl:for-each select="$columns">

<xsl:variable name="aColumnsName" select="name()"/>


<td>

<xsl:value-of select="$aRow/column[@name = $aColumnsName]" />


        </td>
      </xsl:for-each>
    </tr>
  </xsl:for-each>
</table>

Also untested and without knowing the XML structure, but I hope it works ...

Thanks again.


== Ross ==

Regards,


Joerg

PS: Please don't use TABs as indenting in mails. They made XML really unreadable. 2 or 4 spaces are really enough.


-----Original Message-----
From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx
[mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of David
Carlisle

The column ordering is a concern. The sort simply does an alphabetic
sort. Somehow I need to apply the user's column selection order as well.


ah I was lacking meta markup. I did xsl:sort on name because that would
work for column1 column2 etc, I should have known they were not the real
names....

so actually I'd zap the key and instead do

<xsl:variable name="columns"
select="/root/config/columnList/column/@name"/>
....
<xsl:for-each select="row">
<xsl:variable name="row" select="."/>
<xsl:for-each select="$columns">
  <xsl:value-of select="$row/@*[name()=.]">

untested as ever.

David



XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list



Current Thread