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]

Using name() with XPath expressions (fwd)


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


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