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

Re: [xsl] Thought i knew this but i guess not


Subject: Re: [xsl] Thought i knew this but i guess not
From: Wendell Piez <wapiez@xxxxxxxxxxxxxxxx>
Date: Tue, 22 Feb 2011 16:43:52 -0500

Russ,

You are almost there.

First, you want xsl:apply-templates, not xsl:value-of. xsl:apply-templates will continue template matching through the tree. xsl:value-of will write the string value of the element, without processing children with templates.

Second, don't forget to do the usual xsl:copy thing for the elements you don't want to filter out.

Then, I suggest you might invert your logic for clarity.

Something like this?

<xsl:template match="*[@filter]">
<xsl:choose>
<xsl:when test="(contains(@filter, 'filter10')) or contains(@filter, 'filter1'))">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:when>
<xsl:otherwise/>
</xsl:choose>
</xsl:template>


This, of course, easily reduces to an xsl:if.

If that doesn't do it, maybe making a minimal test sample for demonstration would help.

Finally, I note that your test for your filter is brittle. @filter='filter11' will pass. (And 'filter10' will pass for two reasons.) The best fix to this depends on how you are using @filter.

Cheers,
Wendell

On 2/22/2011 3:38 PM, russurquhart1@xxxxxxxxxxx wrote:
Hi Everyone,

I just can't get this today. (Maybe i need more sleep.)

I have the following, trying to follow Wendell'sadvice:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:template match="@*|node()">
     <xsl:copy>
       <xsl:apply-templates select="@*|node()" />
     </xsl:copy>
   </xsl:template>
   <xsl:template match="*[@filter]">
     <xsl:choose>
       <xsl:when test="(not(contains(@filter, 'filter10'))) and (not(contains(@filter, 'filter1')))">
       </xsl:when>
       <xsl:otherwise>
         <xsl:value-of select="." />
       </xsl:otherwise>
     </xsl:choose>
   </xsl:template>

</xsl:stylesheet>

I want this to work kind of like a conditional text thing. When i run this i get NO elements with a filtered attribute.

Little more help for the slow kid? :)

thanks,


Russ Feb 22, 2011 07:35:48 PM, xsl-list@xxxxxxxxxxxxxxxxxxxxxx wrote:
--
======================================================================
Wendell Piez                            mailto:wapiez@xxxxxxxxxxxxxxxx
Mulberry Technologies, Inc.                http://www.mulberrytech.com
17 West Jefferson Street                    Direct Phone: 301/315-9635
Suite 207                                          Phone: 301/315-9631
Rockville, MD  20850                                 Fax: 301/315-8285
----------------------------------------------------------------------
  Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================


Current Thread
Keywords
xml