[xsl] Matching a series of elements in a function

Subject: [xsl] Matching a series of elements in a function
From: "Doug Howell (IT)" <DHOWELL@xxxxxxxxxxxxxxxxxxx>
Date: Wed, 7 May 2003 10:31:20 -0400
I'm loading XML and XSL into a Web page and manipulating the select attribute of the xsl:apply-templates element.

My XML file looks like this:
<component-report>
  <owner>
    <component>
      <name></name>
      <descrip></descrip>
      <process>process1</process>
      <process>process2</process>
      ...
      ...
      <component>
        <name></name>
        <descrip></descrip>
        <process>process1</process>
        <process>process2</process>
        <process>process3</process>
        ...
        ...
      </component>
    </component>
  </owner>
</component-report>

I'm changing the value of the select attribute as a result of user input to search for appropriate components. In this line, I'm trying to find every component where one (any) of its child process elements contains the search text the user typed in:

strNodeToSelect = "/component-report//component[contains(translate(process,'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'),'" + searchTextUpperCase + "')]";

This works fine, as long as the search text is found in the _first_ process element. When the text is in the second or third or fourth, it doesn't match. Is it possible to write this in such a way that it matches the text in _any_ of the process elements?

process - matches only if text is in first process 
//process - doesn't match anything
process[2] - matches only if text is in second process, etc.

Thanks for any help,
Doug Howell
Information Architect
Borders Group

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


Current Thread