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(_at_)calldei(_dot_)com> 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 don’t 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 I’m asking an impossible question (that is the
schemas may simply not allow this restriction in the first place),
But I’m 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(_at_)calldei(_dot_)com
http://www.xmlsh.org
----------------------------------------
David A. Lee
dlee(_at_)calldei(_dot_)com
http://www.xmlsh.org
--~------------------------------------------------------------------
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>
--~--
--~------------------------------------------------------------------
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>
--~--