RE: [xsl] Newline problems

Subject: RE: [xsl] Newline problems
From: "Lars Huttar" <lars_huttar@xxxxxxx>
Date: Mon, 5 May 2003 13:32:50 -0500
> I made changes to apply normalize-space to text nodes as 
> suggested but 
> output again has no data. Do you see any obvious mistakes? 
> Simplified src 
> xml and xsl are as shown below:
> ----------------------------------------------XML------------------
> <!DOCTYPE ABC [
> ...
> ]><ABC>
> ...
> <info>
> <attr>
> <name>
> ponumber</name>
> <atomicValue>
> 12345</atomicValue>
> </attr>
> ...
> </info>
> ...
> </ABC>
> 
> ----------------------------------------------XSL------------------
> 
> <?xml version = "1.0" encoding = "UTF-8"?>
> <xsl:transform xmlns:xsl = 
> "http://www.w3.org/1999/XSL/Transform"; version = 
> "1.0">
>   <xsl:template match = "ABC">
>     <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE 
> OrderProcessing&gt;</xsl:text>
>     <xsl:element name = "Order">
>       <xsl:element name ="Info">
>         <xsl:apply-templates mode = "Attribs" select = "/ABC/info"/>
>       </xsl:element>
>     </xsl:element>
>   </xsl:template>
>   ...
>   <xsl:template mode = "Attribs" match = "info">
>     <xsl:apply-templates mode = "stripNewline" select="text()"/>
>     <xsl:element name = "PO_NUMBER">
>       <xsl:value-of select="attr/atomicValue[../name='ponumber']"/>
>     </xsl:element>
>   ...
>   </xsl:template>
> 
>   <xsl:template mode = "stripNewline" match="text()">
>     <xsl:value-of select="normalize-space(.)"/>
>   </xsl:template>
>   ...
> </xsl:transform>

Vishwajit, it sounds like you are expecting the stripNewline template
to modify the source document, actually removing the newlines from
it so that the following xsl:value-of will be able to recognize the
node you're looking for.  That approach will not work, because in XSL
you're not able to modify the source document.  (That would be a side-
effect, which you're not supposed to be able to do.)

I believe what you want to do here is

  <xsl:template mode = "Attribs" match = "info">
    <xsl:element name = "PO_NUMBER">
      <xsl:value-of select="attr/atomicValue[normalize-space(../name)='ponumber']"/>
    </xsl:element>
  ...
  </xsl:template>

Lars


"Blessings abound wheree'er He reigns"


 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread