Re: [xsl] Matching a recursive local element structure

Subject: Re: [xsl] Matching a recursive local element structure
From: Brandon Ibach <brandon.ibach@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 4 Feb 2011 22:47:38 -0500
Yeah, still no joy from Sourceforge, yet.  Can you summarize the
algorithm you've got so far?

-Brandon :)


On Fri, Feb 4, 2011 at 8:27 PM, David Lee <dlee@xxxxxxxxxxx> wrote:
> 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
> http://xmlsh.svn.sourceforge.net/viewvc/xmlsh/
> 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
> explore.
> 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
> references.
>
> Recursion is fun !
>
>
>
> ----------------------------------------
> David A. Lee
> dlee@xxxxxxxxxxx
> http://www.xmlsh.org
>
>
> -----Original Message-----
> From: Brandon Ibach [mailto:brandon.ibach@xxxxxxxxxxxxxxxxxxx]
> Sent: Friday, February 04, 2011 8:14 PM
> To: xsl-list
> Subject: Re: [xsl] 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
> 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