xsl-list
[Top] [All Lists]

[xsl] Matching for strings...

2006-09-06 08:35:46
Well, the Cookbook didn't help with this problem, or at least not that I saw.

So, my data (in part) is like this..

<xtvd>
   ...
   <programs>
       <program id(_at_)="...">
           <title> ... </title>
           <subtitle> ... </title>
           <description ... </title>
           ...
       </program>
       <program>
       ...
       </program>
       ...
   </programs>
   ...
</xtvd>

(Yes, it's the ever-popular DataDirect TV listings from Tribune Media
Services... I'm working with the data in its "native" xtvd structure,
rather than doing the very long-winded transform to the more popular
XMLTV structure.)

I want to find <program> elements whose <title> or <subtitle> or
<description> might contain the string I've stowed in the variable
$target. Something simple like

<xsl:if test="matches(normalize-space(//tv:program),$target)">

fails, since the first argument wants to be a node, not a sequence. I
can't think of any better solution than looping through all the
programs, looking inside, but with several thousand programs and
several keywords to process ... I hope someone here can see a better
way!

Would it be possible to do this with a key? For example,

<xsl:key name="$target" match="(//title[matches(.,$target)]) or
(//subtitle[matches(.,$target)]) or
(//description[matches(.,$target)])" use="../@id" />

Gee, that looks promising. Must be something wrong with it. I'll try
it. Meanwhile, happy to hear other advice!

Bob Portnell
simply(_dot_)bobp(_at_)gmail(_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>
--~--

<Prev in Thread] Current Thread [Next in Thread>