I have an XML document with two overlapping structures. To get round this, for one of the structures I use empty "start" and "end" tags as follows: <a>I said <z.start/>I will watch my ways</a> <a><x/>and keep my tongue from sin<z.end/></a> In my XSL I want to test, from any node <z.start/> if there is the additional empty element <x/> before the next <z.end/> (i.e. if the imaginary "z" element "contains" x). I have not found any way I can achieve this -- any pointers please? Secondly, if I want to invert the structures, so that the "a" tags become the imaginary empty tags and the z tags "real" elements, I am currently cheating to overcome the well-formed constraint as follows (ignoring the x element above): <xsl:template match="a"> <a.start/><xsl:apply-templates/><a.end/> </xsl:template> <xsl:template match="z.start"> <z>!!DELETE_CLOSE_TAG</z> </xsl:template> <xsl:template match="z.end"> <z>!!DELETE_OPEN_TAG</z> </xsl:template> thus generating: <a.start/>I said <z>!!DELETE_CLOSE_TAG</z>I will watch my ways<a.end/> <a.start/>and keep my tongue from sin<z>!!DELETE_OPEN_TAG</z><a.end/> and then running a simple Perl script to get rid of the unwanted tags amd text to result in: <a.start/>I said <z>I will watch my ways<a.end/> <a.start/>and keep my tongue from sin</z><a.end/> However, I would far rather handle this entirely within the XSL stylesheet. Is there any way I can cheat using CDATA sections to overcome the well-formed constraint and directly match <z> to <z.start/> and </z> to <z.end/>? Thanks, Stuart 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