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

[xsl] Matching a recursive local element structure


Subject: [xsl] Matching a recursive local element structure
From: "David Lee" <dlee@xxxxxxxxxxx>
Date: Fri, 4 Feb 2011 19:01:57 -0500

Suppose I have a schema which describes a recursive structure as local
elements.
Example (pseudo DTD, and pseudo xml I can provide more formal defs if needed
)

Element section  (text)*
Element text ( list | para | bold | #PCDATA )*
Element list ( item*)
Element item ( text | subheading ) *
Element subheading (text)*

So for example doc may look like

<section>
  <text>Text
       <list>
                       <item><para>Item Text</para></item>
                       <item><para>Item Text2</para></item>
                       <item><para>Item Text</para>
       <list><item><para>More text> </item></list></para></item>
                </list>
   </text>
</section>


The key point is that the schema is recursive, so an xpath (or xslt match)
might be

                section/text
                section/text/list/item/para
               
section/text/list/item/list/item/list/item/list/item/list/item . Can get
really long here !!!!



Now suppose I want to avoid an infinite number of XSLT match strings but I
want to match say list/item but ONLY within section/text
(presume there may be a different list/item locally defined within say
subheader)


Suggestions on to a good way to do that ?

<template match=section/text//list/item > 

But this might match
                section/text/subheading/list/item
or
                section/text/list/item/subheading/list/item


which I dont want.

I only want to match the list/item which is a local element definition
below section  (recursively),.
so the match should select
                section/text/list/item/list/item/list/item
but not
                section/text/list/item/subheading/list/item

( which I would say match with
                subheading/list/item
                subheading/list/item/list/item
)


Is there an obvious way to do this ?
Its entirely possible that Im asking an impossible question (that is the
schemas may simply not allow this restriction in the first place),
But Im trying to solve a general problem so asking a general question.

This is based on generating match strings from XSD element declarations so
its really a XSD question as well 
Maybe its impossible to describe a schema such that a descendant list/item
is distinguishable if its under section or subheading ?

Thanks for any suggestion !


-David

----------------------------------------
David A. Lee
dlee@xxxxxxxxxxx
http://www.xmlsh.org



----------------------------------------
David A. Lee
dlee@xxxxxxxxxxx
http://www.xmlsh.org


Current Thread
Keywords