Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > XML > Match attribute values (columns) to column names

Reply
Thread Tools

Match attribute values (columns) to column names

 
 
Carl
Guest
Posts: n/a
 
      04-04-2004
Hi,

I have found a way to map attributes (columns) to column headings. But
this runs really slow. Is there a way to improve it?

Thanks,
Carl

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="stylesheet.xslt"?>
<root>
<Schema name="Schema1" xmlns="urn:schemas-microsoft-comml-data"
xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="lookup" content="empty" model="closed">
<AttributeType name="col1" dt:type="i2"/>
<AttributeType name="col2" dt:type="i2"/>
<AttributeType name="col3" dt:type="i2"/>
<AttributeType name="col4" dt:type="i2"/>
<AttributeType name="col5" dt:type="i2"/>
<attribute type="col1"/>
<attribute type="col2"/>
<attribute type="col3"/>
<attribute type="col4"/>
<attribute type="col5"/>
</ElementType>
</Schema>
<lookup xmlns="x-schema:#Schema1" col1="a" col2="b" col3="c"/>
<lookup xmlns="x-schema:#Schema1" col1="d" col3="e" col5="f"/>
<lookup xmlns="x-schema:#Schema1" col4="g"/>
</root>





<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlnssl="http://www.w3.org/1999/XSL/Transform"
xmlns:data="x-schema:#Schema1"
xmlns:schema="urn:schemas-microsoft-comml-data"
xmlns:user="http://mycompany.com/mynamespace"
xmlns:msxsl="urn:schemas-microsoft-comslt">

<msxsl:script language="JScript" implements-prefix="user">
var numcols=0; var datacol=0; var HeadingCols = new Array();
function addHeadingColumn(node) {
numcols++;
HeadingCols[numcols-1] = node;
return HeadingCols[numcols-1];
}
function getHeadingColumn() {return HeadingCols[datacol];}
function resetDataColumn(){datacol=0; return '';}
function addDataColumn(){datacol++; return '';}
</msxsl:script>

<xsl:template match="/root">
<TABLE>
<xsl:apply-templates select="schema:Schema" /> <!-- headings -->
<xsl:apply-templates select="data:lookup" /> <!-- data -->
</TABLE>
</xsl:template>

<xsl:template match="schema:Schema">
<tr style="color:White;background-color:Blue;">
<td></td>
<xsl:for-each select="*/*"><!-- Select all the elements of the
schema-->
<xsl:if test="name(.)='AttributeType'"><!-- only pick the
AttributeType elements, otherwise you will have the columns twice -->
<xsl:for-each select="@name">
<xsl:if test=". != 'col1'">
<xsl:variable name="addHeading1"
select="user:addHeadingColumn(.)"/>
<td>
<xsl:attribute name="name"><xsl:value-of
select="."/></xsl:attribute>
<xsl:value-of select="."/>
</td>
</xsl:if>
</xsl:for-each>
</xsl:if>
</xsl:for-each>
<td></td>
</tr>
</xsl:template>

<!-- lookup Template -->
<xsl:template match="data:lookup">
<xsl:variable name="resetDataColumn"
select="user:resetDataColumn()"/>
<tr>
<td></td>
<xsl:for-each select="@*">
<xsl:if test="name(.) != 'col1'">
<xsl:call-template name="whileloop">
<xsl:with-param name="MatchColumn" select="name(.)" />
</xsl:call-template>
<xsl:variable name="addDataColumn" select="user:addDataColumn()"/>
<td><xsl:value-of select="."/></td>
</xsl:if>
</xsl:for-each>
<td></td>
</tr>
</xsl:template>

<!-- While loop -->
<xsl:template name="whileloop">
<xslaram name="MatchColumn" />
<!-- put the code to execute here -->
<xsl:variable name="HeadingColumn"
select="user:getHeadingColumn()"/>
<!-- code to execue ends here -->
<!-- put the comparison to make here -->
<xsl:if test="$MatchColumn != $HeadingColumn">
<!-- comparison ends here -->
<xsl:variable name="addDataColumn" select="user:addDataColumn()"/>
<td></td>
<xsl:call-template name="whileloop">
<xsl:with-param name="MatchColumn" select="$MatchColumn" />
</xsl:call-template>
</xsl:if>
</xsl:template>


</xsl:stylesheet>
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
gridview column values to another page via gridview hyperlink column Keith G Hicks ASP .Net 3 02-18-2008 06:17 AM
Binding multi column values in one column Larry R ASP .Net 1 06-08-2007 06:27 AM
JNDI: Delete only one attribute when there are several different values for the same attribute bsporb@gmail.com Java 3 05-02-2007 05:41 AM
Match an attribute value in a set of possible values patrin XML 5 09-02-2006 04:33 AM
Matching attribute names to element names in a different path Carl XML 0 04-01-2004 01:15 PM



Advertisments