[xsl] Using name() with XPath expressions (fwd)

Subject: [xsl] Using name() with XPath expressions (fwd)
From: Jenny Simpson <simpson@xxxxxxxxxxx>
Date: Fri, 13 Jul 2001 22:31:11 -0600
Dear all,
      I am using the following piece of code (thanks to Michael Kay) to
convert a string value to the name of a text node.  Then I extract the
text contained in that node and use it in a comparison statement.  

<xsl:for-each select="bibliography/bibitem">

  <xsl:if test="$search = *[name() = $field]">
    <xsl:call-template name="printBib" />
  </xsl:if>

</xsl:for-each>

Typically, $field contains something like 'year', in which case the
comparison works fine.  Here's the xml:

<bibitem type="book" label="har91">
        <author>
            <firstname>R.</firstname>    
            <middlename>M.</middlename>  
            <lastname>Haralick</lastname>
        </author>
        <author>
            <firstname>L.</firstname>   
            <middlename>G.</middlename> 
            <lastname>Shapiro</lastname>
        </author>
        <year>1991</year>
        <title>Computer and Robot Vision</title>
        <volume>2</volume>
        <publisher>Addison-Wesley</publisher>
</bibitem>

The problem is that if the variable $field contains the path of a text
node instead of the name itself, the name function doesn't work.  For
example, if $field contains 'author/lastname',  the name function assumes
that 'author/lastname' is the string value of the name of a node instead
of the path to a node.  How do I alter this comparison so that it works
with $field values that are paths as well as field values that are
names?  Thanks in advance.

Jenny Simpson
Sci Institute




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


Current Thread