[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: text() children
I dunno. I tried Mike Kay's hint with priorities but couldn't make it fly. I think the following does what David asks for in the statement below; can't help feeling there should be something more elegant, though, and I bet it doesn't really handle the real life cases .... Steve --- <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="div"> <xsl:for-each select="./node()"> <xsl:choose> <xsl:when test="name()='p'"> <xsl:copy-of select="."/> </xsl:when> <xsl:otherwise> <xsl:if test="position()=1"> <p> <xsl:value-of select="."/> <xsl:call-template name="copy-non-p"/> </p> </xsl:if> </xsl:otherwise> </xsl:choose> </xsl:for-each> </xsl:template> <xsl:template name="copy-non-p"> <xsl:param name="index" select="1"/> <xsl:variable name="node" select="./following-sibling::node()[$index]"/> <xsl:if test="not(name($node)='p')"> <xsl:apply-templates select="$node"/> <xsl:call-template name="copy-non-p"> <xsl:with-param name="index" select="$index+1"/> </xsl:call-template> </xsl:if> </xsl:template> <xsl:template match="a"> <xsl:copy-of select=".|@*"/> </xsl:template> <xsl:template match="p"> <xsl:copy-of select="."/> </xsl:template> </xsl:stylesheet> --- "Pawson, David" wrote: > > Sorry Phil, Mike, I still can't get it. > > <div>Primary contributions by David Ornstein > <a href="mailto:davido@xxxxxxxxxxxxx">davido@xxxxxxxxxxxxx</a> > and Kai Matthews with scientific review by Dr. Karl M. Johnson. > <p>This document provides answers to common questions about Ebola. For > more information about Ebola </p> > </div> > > I want as output > > <p>Primary contributions by David Ornstein > <a href="mailto:davido@xxxxxxxxxxxxx">davido@xxxxxxxxxxxxx</a> > and Kai Matthews with scientific review by Dr. Karl M. Johnson. </p> > <p>This document provides answers to common questions about Ebola. For > more information about Ebola </p> > > The input tree is mixed pcdata and elements. > > If I match on div I then need to pull all the text() children nodes, > (which will ignore the <a > content.) > > If I match on div/text() I can only tag the 'bits' of text either side of > the > <a> element, not all of it. > > (xpath tool shows it up great btw) > > How can I 'gather' all the text yet still process the <a> element > within it? > > regards, DaveP > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list -- ---------------------------------------------------------------------- Steve Tinney Babylonian Section * University of Pennsylvania Museum stinney@xxxxxxxxxxxxx Phila, PA. 215-898-4047 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
|