xsl-list
[Top] [All Lists]

Re: [xsl] Filtering problem

2006-06-27 21:29:28
Hi Marcus,
 You can use "indentity transform" based stylesheet (as shown below)
conveniently, for creating filters:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; version="1.0">

<xsl:output method="xml"  indent="yes" />

<!-- identity transform; copies everything -->
<xsl:template match="node() | @*">
  <xsl:copy>
      <xsl:apply-templates select="node() | @*" />
  </xsl:copy>
</xsl:template>

<!-- filter 1 -->
<xsl:template match="*[starts-with(name(@*), 'dim1')]" />

<!-- filter 2 ; a priority is attached, otherwise filter 1 and filter
2 rules gets ambiguous -->
<xsl:template match="*[(_at_)dim1_a = 'yes']" priority="3" />

</xsl:stylesheet>

Regards,
Mukul

On 6/28/06, Marcus Streets <marcus(_at_)ncipher(_dot_)com> wrote:
I have inherited some XML files that I need to filter.
Because i have inherited the files I did not design the way the elements
were tagged.
But I have to write the xsl to do the filtering - and I am only just
dipping my toe into xsl.

I want to output XML - that I will feed into FrameMaker for typesetting.

I want to filter on a number of dimensions.

For various hysterical reasons the various elements have been taged with
attributes of the form

<element dim1_a="yes">
or
<element dim1_a="yes" dim1_b="yes">

I want to create a filter that will include all elements where either:

there are no attributes starting dim1
or
dim1_a="yes"

And I need to do this for several dim1 dim2 etc.

If needs be I can run a number of xsl transforms one for each dimension.

I have some other attributes = e.g. role that I need to keep.

Is this possible, or do I need to completely change the way these files
are tagged.

If so can I easily do that with xsl - or do I need to do it by hand.

Thanks

Marcus

--~------------------------------------------------------------------
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>