RE: [xsl] mixed content searching

Subject: RE: [xsl] mixed content searching
From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx>
Date: Tue, 7 May 2002 09:18:21 +0100
> I just subscribed a few minutes ago.

This is a bit like the vicar complaining in his sermon about the people who
aren't in church, but I do wish people would lurk for a week or too before

 I'd like to get some help on or
> probably some sample code that can do the following for me.
> The given XML file has mixed contents data such as
> <doc>hello <name>Tom</name>. i am <name>Sue</name>. cheers</doc>
> Q1) how do I write grep.xsl to meet the following commands
>   H:> saxon example.xml grep.xsl target=Tom
>   Tom
>   H:> saxon example.xml grep.xsl target=am
>   .... i am ...
>   H:> saxon example.xml grep.xsl target=he
>   hello ...
>   .... cheers

Guess: you want to output the contents of the text nodes containing the
parameter string. If the node has following-sibling text nodes, follow it by
"...". If it has preceding-sibling text nodes, precede it by "...". Output
each match on a new line, with output method = text.

<xsl:template match="text()">
<xsl:if test="contains(., $target)">
   <xsl:if test="preceding-sibling::text()">... </xsl:if>
   <xsl:value-of select="."/>
   <xsl:if test="following-sibling::text()"> ...</xsl:if>
> Q2) How do I write grep2.xsl to meet the following commands
>   H:> saxon example.xml grep2.xsl target=Tom
>   <doc>hello <name class="matched">Tom</name>. i am <name>Sue</name>.
> cheers</doc>
>   H:> saxon example.xml grep2.xsl target=am
>   <doc class="matched">hello <name>Tom</name>. i am <name>Sue</name>.
> cheers</doc>
>   H:> saxon example.xml grep2.xsl target=he
>   <doc class="matched">hello <name>Tom</name>. i am <name>Sue</name>.
> cheers</doc>
<xsl:template match="*">
  <xsl:copy-of select="@*"/>
  <xsl:for-each select="text()">
    <xsl:if test="contains(., $param)">
      <xsl:attribute name="class">matched</xsl:attribute>

Michael Kay
Software AG
home: Michael.H.Kay@xxxxxxxxxxxx
work: Michael.Kay@xxxxxxxxxxxxxx

 XSL-List info and archive:

Current Thread