Subject: RE: Returning HTML tags from a function not working
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 26 Jan 2006 23:19:05 -0000
|
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: 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
|