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"><!DOCTYPE
OrderProcessing></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