[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

Re: Testing/searching for several elements using xsl


Subject: Re: Testing/searching for several elements using xsl
From: Rick Geimer <rick.geimer@xxxxxxx>
Date: Wed, 14 Apr 1999 11:39:24 -0700

This might not be exactly what you are looking for, but it seems to do the job,
at least for IE5. Given the following XML document:

<?xml version="1.0"?>
<?xml-stylesheet href="cddoc.xsl" type="text/xsl"?>
<cd_doc>
        <entries>
          <entry no="1" path="/cdrom/stugg/long
path/moretext/python_stuff.tar.gz"/>
          <entry no="5" path="/cdrom/stugg/long
path/moretext/python_stuff.tar.gz"/>
          <entry no="21" path="/cdrom/stugg/long
path/moretext/python_stuff.tar.gz"/>
        </entries>
</cd_doc>

The following XSL stylesheet will find entries with "no" attributes matching 1,
21, or 1432 and display the line "Here's an entry".

<xsl:template xmlns:xsl="http://www.w3.org/TR/WD-xsl"
xmlns:qxsl="quote:http://www.w3.org/TR/WD-xsl">
 <html><head><title>CD Stuff</title></head>
  <body>
   <xsl:apply-templates select="/*"/>
  </body>
 </html>

 <xsl:define-template-set>

  <xsl:template match="cd_doc">
      <h1>Result of search</h1>
      <xsl:apply-templates/>
  </xsl:template>

  <xsl:template match="entries">
   <xsl:apply-templates select="entry[@no = 1 or @no = 21 or @no = 1432]" />
  </xsl:template>

  <xsl:template match="entry">
   <h2>Here's an entry</h2>

   <xsl:apply-templates/>
  </xsl:template>

 </xsl:define-template-set>

</xsl:template>

Hope this helps.

Rick Geimer
National Semiconductor
rick.geimer@xxxxxxx


------------------------------------------------------------------------------

Thomas Weholt wrote:

> Hello,
>
> Note! This mail is related to the "Searching huge xml-documents" question I
> posted earlier, but it`s intereseting by itself too.
>
> I want to locate several "entries"-elements in a xml-document using a
> entry-elements "no"-attribute.
>
> Sample xml-doc :
>
> <cd_doc>
>         ... info about the cd ...
>         <entries>
>           <entry no="1" path="/cdrom/stugg/long path/more
> text/python_stuff.tar.gz" ... more info .../>
>           ... lots of more entries
>         </entries>
> </cd_doc>
>
> I tried with a stylesheet like this :
>
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
>
>         <xsl:template match="cd_doc">
>           <HTML>
>             <BODY>
>                 <h2>Result of search</h2>
>                   <xsl:apply-templates select="entry"/>
>            </BODY>
>           </HTML>
>         </xsl:template>
>
>         <xsl:template match="entry">
>           <xsl:choose>
>                 <xsl:when test='.[@no="1"|@no="21"|@no="1432"]'>
>                    <xsl:apply-templates select=""/>
>                 </xsl:when>
>           </xsl:choose>
>         </xsl:template>
>
> </xsl:stylesheet>
>
> But it didn`t work. I want to process entries with attribute numbers equal
> to 1, 21 and 1432. Used Xt to generate HTML with these documents.
>
> ----------------------------------------------
>               Thomas Weholt
>        eMail : weholt@xxxxxxxxxxxxxx
>      HTTP://www.linuxfreak.com/~weholt
>         Phone : +47 - 92 09 59 68
> ----------------------------------------------
>
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


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



Current Thread
Keywords