[XSL-LIST Mailing List Archive Home]
[By Thread]
[By Date]
RE: [xsl] Returning HTML tags from a function not working
Subject: RE: [xsl] Returning HTML tags from a function not working From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Fri, 27 Jan 2006 18:14:30 -0000 |
> I changed return type to "node()*" but in the output HTML I > don't see any <br /> tags. Perhaps you used xsl:value-of to copy the data returned by the function to the HTML result tree. This would extract the string value of the returned nodes. You need to use xsl:copy-of or xsl:sequence. Michael Kay http://www.saxonica.com/ > > So my function looks like this: > <xsl:function name="xrsl:printdoc" as="node()*> > <xsl:param name="docnode" as="element()*"/> > <xsl:if test="$docnode[1]"> > <xsl:analyze-string select="$docnode[1]" regex="\n"> > <xsl:matching-substring><br /></xsl:matching-substring> > <xsl:non-matching-substring> > <xsl:value-of select="normalize-space(.)"/> > </xsl:non-matching-substring> > </xsl:analyze-string> > </xsl:if> > </xsl:function> > > In addition I noticed that if the input has HTML tags, they > are being stripped out. > > What I want is to copy the "doc" node verbatim but replace > new lines with <br /> and normalise > spaces. So if the doc node has <b> </b> then they should be > copied to the output as it is. > > Thanks, > Anupam. > > > > --- Michael Kay <mike@xxxxxxxxxxxx> wrote: > > > You've specified the result of the function as xs:string. > This means that > > any elements in the result get atomized, and when you > atomize an empty <br/> > > element you get nothing (well, you get an empty string, > which amounts to the > > same thing...). Declare the result as node()* and all > should be well. > > > > My own style would be to use a template for this rather > than a function. > > It's not mandatory, but I think people expect when they see > a call-template > > that nodes will be constructed, and they don't expect that > when the see a > > function call. > > > > Michael Kay > > http://www.saxonica.com/ > > > > > -----Original Message----- > > > From: Agnisys [mailto:agnisys@xxxxxxxxx] > > > Sent: 26 January 2006 22:01 > > > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > > > Subject: [xsl] Returning HTML tags from a function not working > > > > > > Hi, > > > I'm using Saxson XSLT 2.0 on a Linux system. > > > > > > Input looks like this: > > > > > > <doc> > > > Some text that can be > > > Multiline. It can also have lots of spaces. > > > </doc> > > > > > > The Output of XSL is set to HTML. > > > > > > I need the output to retain the newlines but retain the spaces. > > > > > > So I want the HTML to look like: > > > ----------------------------------------------- > > > Some text that can be > > > Multiline. It can also have lots of spaces. > > > ----------------------------------------------- > > > > > > Here is my function, but somehow the <br /> vanishes from the > > > HTML and so I get one line only. > > > <xsl:function name="xrsl:printdoc" as="xs:string*"> > > > <xsl:param name="docnode" as="element()?"/> > > > <xsl:if test="$docnode[1]"> > > > <xsl:analyze-string select="$docnode[1]" regex="\n"> > > > <xsl:matching-substring><br /></xsl:matching-substring> > > > <xsl:non-matching-substring> > > > <xsl:value-of select="normalize-space(.)"/> > > > </xsl:non-matching-substring> > > > </xsl:analyze-string> > > > </xsl:if> > > > </xsl:function> > > > > > > Please help! > > > Thanks, > > > Anupam. > > > > > > > > > > > > __________________________________________________ > > > Do You Yahoo!? > > > Tired of spam? Yahoo! Mail has the best spam protection around > > > http://mail.yahoo.com > > > > > > > __________________________________________________ > Do You Yahoo!? > Tired of spam? Yahoo! Mail has the best spam protection around > http://mail.yahoo.com
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Returning HTML tags from , David Carlisle | Thread | [xsl] Shallow copy and base URI, Florent Georges |
[xsl] creating new lines in textare, Stuart Zakon | Date | RE: [xsl] Shallow copy and base URI, Michael Kay |
Month |