How to address generic unknown elements !
I have been using XML's with "known" element names that I could address but I need to change it to be more generic so that I can run a stylesheet over an XML without knowing the structure beforehand: XML: <ABC> <BCD> <EFG> <etc.....> </EFG> </BCD> <BCD> <EFG> <etc.....> </EFG> </BCD> </ABC> old XSL: <xsl:template match="ABC"> <xsl:for-each select="BCD//*[not(*)]"> <xsl:value-of select="local-name()"/> </xsl:for-each> </xsl:template> <xsl:template match="BCD"> <xsl:for-each select=".//*[not(*)]"> <xsl:value-of select="node()"/> </xsl:template> That gives me the drill down node-names from the first occurence of BCD and the drill down node values of all BCD's. I'm trying to have: (or similar!) <xsl:template match="/"> <xsl:for-each select="?//*[not(*)]"> ???stuck here??? <xsl:value-of select="local-name()"/> </xsl:for-each> <xsl:for-each select=".//*[not(*)]"> <xsl:value-of select="node()"/> </xsl:template> My match is now "/" (to process all) instead of ABC as I don't have specific names to reference. How do I reference BCD (I know it always begins 2 levels down from the top node) and drill down to the end of the node 1 time to get the node-names without knowing it's name ? I only want it to do the local-name() piece once (ie. for the 1st element) whilst doing node() for all elements. The node() bit is OK but I can't get the local-name() piece to deliver what I want instead I end up with "number of iterations" x node-names. I guess for-each is wrong but I think I'm stuck with 1 template match "/" or am I thinking wrongly (again!). Any help appreciated Thanks, Robin XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
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