Subject: RE: [xsl] Matching a recursive local element structure From: "David Lee" <dlee@xxxxxxxxxxx> Date: Fri, 4 Feb 2011 20:06:18 -0500 |
Thanks for the ideas (all!) Let me restate my question maybe it might lead to another idea (I'm still floundering !) For every element declaration in an XSD I would like to generate a unique XSLT match expression that matches that element declaration (but no others). I've got it working quite well for both global and local elements until I hit a recursive structure then well ... it recurses :) Thanks for any suggestions ! I *feel* this should be solvable because while the structure are infinitely recursive, each level of the recursion matches the same element declaration so shouldnt have to be unrolled ... I just cant yet get my head around a match expression to catch it right. But maybe its not finitely solvable ? ---------------------------------------- David A. Lee dlee@xxxxxxxxxxx http://www.xmlsh.org -----Original Message----- From: Brandon Ibach [mailto:brandon.ibach@xxxxxxxxxxxxxxxxxxx] Sent: Friday, February 04, 2011 7:44 PM To: xsl-list Subject: Re: [xsl] Matching a recursive local element structure Perhaps this approach is not as generic as you may have had in mind, but for this case, I think it would work. <template match=section/text//list/item[not(ancestor::subheading)] > -Brandon :) On Fri, Feb 4, 2011 at 7:01 PM, David Lee <dlee@xxxxxxxxxxx> wrote: > 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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Matching a recursive loca, Brandon Ibach | Thread | Re: [xsl] Matching a recursive loca, Brandon Ibach |
Re: [xsl] Matching a recursive loca, Brandon Ibach | Date | Re: [xsl] Matching a recursive loca, Brandon Ibach |
Month |