Hello xsl-list,
How do I get a numbered sequence for a sorted list excluding a few nodes?
below is the output I'm getting
Note 1: objectId, address,DbAddress etc are correct as per sort & exclusion.
(0),(9),(14) etc are as source node list no-sort but excluded
correct sorted sequence would be 0,1, 2 etc (the excluded sorted order
-1).
Note 2: Its for a database - ordinal position is quicker than...["objectId"]
SqlDataReader dr=cmd.ExecuteReader();
while (dr.Read())
{
if ( ! dr.IsDBNull(0))
{
objectId=dr.GetInt32(0);
}
if ( ! dr.IsDBNull(9))
{
address=dr.GetString(9);
}
if ( ! dr.IsDBNull(14))
{
DbAddress=dr.GetString(14);
}
if ( ! dr.IsDBNull(13))
{
DbName=dr.GetString(13);
}
....
Its a for-each loop and I exclude some nodes with a test
Problem occurs with number at:
<xsl:call-template name="columnOrdinal">
<xsl:with-param name="sequence">
<xsl:number level="any"/>
</xsl:with-param>
</xsl:call-template>
Note : columnOrdinal just rebases i.e. number-1 (works fine)
Code Full Listing:
<xsl:for-each select="$table/columns/column"><!--Put primary key col(s) at head
of list -->
<xsl:sort select="@inPrimaryKey" order="descending"/>
<xsl:sort select="./colName"/>
<xsl:choose>
<xsl:when test="./colName= 'rowGUID'"></xsl:when>
<xsl:when test="./colName= 'auto_rv'" ></xsl:when>
<xsl:when test="./colName= 'rowCreatedBy'"></xsl:when>
<xsl:when test="./colName= 'rowCreated'"></xsl:when>
<xsl:when test="./colName= 'rowModified'"></xsl:when>
<xsl:when test="./colName= 'rowModifiedBy'"></xsl:when>
<xsl:otherwise>
<xsl:variable name="colOrdinal">
<xsl:call-template name="parenthesize">
<xsl:with-param name="value">
<xsl:call-template name="columnOrdinal">
<xsl:with-param name="sequence">
<xsl:number level="any"/>
</xsl:with-param>
</xsl:call-template>
</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:call-template name="if-stmt">
<xsl:with-param name="line" select="2"/>
<xsl:with-param name="tab" select="$tab+2"/>
<xsl:with-param name="expression">
<xsl:text> ! dr.IsDBNull</xsl:text>
<xsl:value-of select="$colOrdinal"/>
</xsl:with-param>
<xsl:with-param name="stmt">
<xsl:choose>
<xsl:when test="./@identity='true'">
<xsl:text>objectId</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="./colName"/>
</xsl:otherwise>
</xsl:choose>
<xsl:text>=dr.</xsl:text>
<xsl:call-template name="replace">
<xsl:with-param name="value">
<xsl:value-of
select="./@NetFrameworkTypedAccessor"/>
</xsl:with-param>
<xsl:with-param name="search-string">
<xsl:text>()</xsl:text>
</xsl:with-param>
<xsl:with-param name="replace-string">
<xsl:value-of select="$colOrdinal"/>
</xsl:with-param>
</xsl:call-template><!-- end replace -->
</xsl:with-param>
</xsl:call-template><!-- end if-stmt -->
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
--
Best regards,
Arthur mailto:ArthurM(_at_)seipas(_dot_)com
--~------------------------------------------------------------------
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>
--~--