|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Matching elements with specific multiple parents
I'm trying to write a template match expression that matches an element only
if it is a child of (1 or more) parents.
Here's an example with 2 parents.
XML:
<?xml version="1.0"?>
<parent>
<child a="1">
<child a="2"/>
</child>
<foo>
<child a="3"/>
</foo>
<bar>
<child a="4"/>
</bar>
</parent>
XSLT:
<?xml version="1.0"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="text()"/>
<xsl:template match="child[node-name(..) = ( QName((),'foo') ,
QName((),'bar') )]">
<child a="{@a}"/>
<xsl:apply-templates select="*"/>
</xsl:template>
</xsl:stylesheet>
Result (correct)
<child a="3"/>
<child a="4"/>
-=--------------------------------------------------------------
This seems extremely verbose and inelegant but is the best I've come up
with.
I'd like something like
match="(foo|bar)/child"
but of course that doesn't work.
Any suggestions on a simpler syntax then what I've come up with ?
Note that this is programmatically generated XSLT so I cant easily
hand-optimize simple cases, it needs to work in the 1-N case in a way that's
reasonably constructible programmatically.
My working example is straightforward to construct but it hurts my eyes.
Maybe its just my eyes that needs work :)
Thanks for any ideas
----------------------------------------
David A. Lee
dlee@xxxxxxxxxxx
http://www.xmlsh.org
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








