Unable to use apply-templates with node-set - XSLT

55 Views Asked by At

I am trying to get distinct values of shelf and add them to xml tree using node-set. I am trying to print the values of node-set using apply-templates. But I am doing something wrong. Kindly correct me. Thanks

  <xsl:template name="form_list">
        <xsl:for-each select="//library/section/@shelf[generate-id()= generate-id(key('distinct_shelfs',.)[1])]">
    
        <xsl:variable name="shelfs">
            <ml>
            <m><xsl:value-of select="."/></m>
            </ml>
        </xsl:variable> 
          
        </xsl:for-each>
    
    <xsl:variable name="Shelf_Set"><xsl:value-of select="exsl:node-set($shelfs)/ml"/></xsl:variable>
    
    </xsl:template>
    
    <xsl:call-template name="PrintShelfs"/> 
    
    <xsl:template name="PrintShelfs">
    
    <xsl:apply-templates select="$Shelf_Set" mode="m1"/>
    
    </xsl:template>
    
    <xsl:template match="ml" mode="m1" >
    
    <a><xsl:value-of select='.'/></a>
    
    </xsl:template>
1

There are 1 best solutions below

6
On

The xsl:value-of instruction flattens a node-set to a single text node. I suspect you want simply

<xsl:variable name="Shelf_Set" select="exsl:node-set($shelfs)/ml"/>