[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: Matching a recursive local element structure

Subject: RE: Matching a recursive local element structure
From: "David Lee" <dlee@xxxxxxxxxxx>
Date: Fri, 4 Feb 2011 20:27:51 -0500
RE:  Matching a recursive local element structure
Everything is checked into sourceforge but its giving me network errors now
(under https://xmlsh.svn.sourceforge.net/svnroot/xmlsh/extensions/json,
This URl is giving me network errors
But I dont recommend it ... its quite complex and large.  I'm not really
asking for people read or  write this for me ... or analyze the code.
(if you did it would be awesome ! but its a challenging task) ..
The basic concept is I'm extracting from the XSD using Apache schema API a
'minimal' description of the element structure, then using xquery attempting
to produce match expressions for each element (and attribute) declaration
and trying to avoid infinite recursion.   Its amazingly non-trivial.

Which is why I'm asking for is abstract ideas ...  and of course willing to
accept abstract answers ... or none of course ...
I'm not asking for a solution just hoping maybe a suggestion on paths to
It just 'seems like its such an obvious problem' that people would have run
into it before and just know if off the top of their heads ...
I'm hoping there is a 'simple pattern' that match expressions might 'match
up' with XSD structures in an 'obvious' way ...
But alas I suspect that may be asking too much.

My next thought is this might be best solved with a schema-aware xslt
expression,  but in the general case these may not be types, just recursive

Recursion is fun !

David A. Lee

-----Original Message-----
From: Brandon Ibach [mailto:brandon.ibach@xxxxxxxxxxxxxxxxxxx]
Sent: Friday, February 04, 2011 8:14 PM
To: xsl-list
Subject: Re:  Matching a recursive local element structure

Can we see the code you have so far?  It'd be a lot easier to address
specific issues in existing code than to philosophize about an
abstract approach.

-Brandon :)

On Fri, Feb 4, 2011 at 8:06 PM, David Lee <dlee@xxxxxxxxxxx> wrote:
> 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
> 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
> recursive, each level of the recursion matches the same element
> 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:  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
>> 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
>> 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
>> 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


Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
First Name
Last Name
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.