This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: using attribute value as an attribute name OR using elementvalue as an attribute name


Hello Ross,

ross@webwolves.com 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@lists.mulberrytech.com
[mailto:owner-xsl-list@lists.mulberrytech.com]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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]