Dear friends, I am trying to normalize the hard returns, tabs and extra spaces in nodes that have children. I have tried a number of different usages of normalize-space() but nothing seems to work. I began to use normalize-space in an effort to dectect errors in coding legacy finding aids. Some elements would only have nested nodes and some nodes would only have text. So I used normalize-space to find these errors (text where it should not be in the xml document). I used node()[normalize-space(.)]. This would allow me to find text in a node no matter where it appeared, before or after any children in the node. But now I am not so sure that it works correctly. Initally my object was to create a template that would detect any children of the current node it was processing. In this instance the node is TITLE. If there was a child node, then it would use xsl:copy-of, but if not it would call the node with xsl:value-of. I then wanted to normalize the space within the node so that even if there was a child node any line breaks, tabs or extra spaces would be normalized into one line. Of course this code is created for testing real documents. Could anyone help me out. I thought I might use translate() but I am not sure if I really need to do that. Sincerely, Mike Ferrando Washington, DC What I have is: <TT> <T1> <TITLE>This is a normal title</TITLE> </T1> <T1> <TITLE>This is <S>not</S> a normal title</TITLE> </T1> </TT> This is what I want: <TITLE>This is a normal title</TITLE> <TITLE>This is <S>not</S> a normal title</TITLE> This is my xsl: <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output version="1.0" method="xml" indent="yes" encoding="utf-8" omit-xml-declaration="no" standalone="no" media-type="text/xml"/> <!-- Indent turned off --> <xsl:template match="/"> <xsl:text>
</xsl:text> <xsl:comment> <xsl:value-of select="concat(' Transformed with ', $replace, '.xsl ')"/> </xsl:comment> <xsl:text>
</xsl:text> <C01> <xsl:apply-templates select="//T1"/> <xsl:text>
</xsl:text> </C01> </xsl:template> <xsl:template match="T1"> <xsl:text>
</xsl:text> <T1> <xsl:apply-templates select="TITLE"/> <xsl:text>
</xsl:text> </T1> </xsl:template> <xsl:template match="TITLE"> <xsl:variable name="nest" select="child::*/node()"/> <xsl:text>
</xsl:text> <TITLE> <xsl:choose> <xsl:when test="$nest"> <xsl:copy-of select="concat('nnn', $nest, 'nnn', node()[normalize-space(.)])"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="concat('nnn', $nest, 'nnn', normalize-space(node()))"/> </xsl:otherwise> </xsl:choose> </TITLE> </xsl:template> </xsl:stylesheet> __________________________________________________ Do You Yahoo!? Yahoo! - Official partner of 2002 FIFA World Cup http://fifaworldcup.yahoo.com 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