RE: specifying text node filtering rules

"Michael Kay" <[email protected]> Thu, 13 Dec 2007 17:30:14 -0000
Newsgroups gmane.comp.web.query-languages
Message-ID <00b801c83dad$d2b7da40$6501a8c0@turtle>

XQuery does not offer rule-based processing of this kind. For that, you want
XSLT. In XSLT it's very easy to express this kind of rule:

<xsl:template match="text()">
  <xsl:value-of select="normalize-space()"/>
</xsl:template>

Michael Kay
http://www.saxonica.com/ 

> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On 
> Behalf Of Vasilis Vagenas
> Sent: 13 December 2007 08:28
> To: [email protected]
> Subject: specifying text node filtering rules
> 
> 
> Hello! I wonder if the following is possible and cannot find 
> an answer to it. I use XQuery code to read an input XML 
> document "in.xml" and produce an output XML document 
> "out.xml". I wonder if I can specify a rule so that all text 
> nodes copied from "in.xml" to "out.xml" are filtered as 
> follows: every group of consecutive whitespace characters 
> (tabs, new lines, spaces) are replaced by a single space character.
> Given that text nodes are copied by many, diverse ways in my 
> code, I am not looking for a function manipulating strings 
> (that should be called whenever needed); this, apart from 
> being a hardcoded procedure, wouldn't be enough when copying 
> element nodes containing text nodes in their tree structures. 
> Instead, I am looking for a way to specify a general rule for 
> filtering text nodes (e.g. like "declare boundary-space strip;").
> 
> Thanks in advance.
>