[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Novice Question - matching entire text children
(fourth try to send this email to xsl-list, this time without reply) > In any case, it's a good idea to make sure that your code still works if > someone puts a comment in the middle of the text, so it's best not to > assume that all the text of an element is in a single node. Usually the > best way of doing that (unless you are dealing with mixed content) is to > use the string-value of the element node, rather than its text node > children. As already stated this makes a difference for mixed content. Take this simple XML file as sample: $ cat mixed.xml <a> 1<b>2</b>3 </a> $ While string(/a) returns a string, /a/text() returns a node-set: $ xpath++ "string(/a)" mixed.xml 123 $ xpath++ "/a/text()" mixed.xml ################################################################### 1 ################################################################### 3 $ This makes a big difference if applying the often used normalize-space() function to the result. If you want to get the normalized concatenation of the content ("123"/"13") directly applying normalize-space() does not work (for "13"). The reason is that normalize-space() applied to a node-set will only be applied to the first node of that node-set: $ xpath++ "normalize-space(string(/a))" mixed.xml 123 $ xpath++ "normalize-space(/a/text())" mixed.xml 1 $ What I do for getting "13" from mixed.xml: <xsl:variable name="txt"><xsl:copy-of select="text()"/></xsl:variable> <xsl:value-of select="normalize-space($txt)"/> Not sure whether this is the best way to do it, but it works. Is getting the same result possible in XPath (1.0)? Mit besten Gruessen / Best wishes, Hermann Stamm-Wilbrandt Developer, XML Compiler, L3 Fixpack team lead WebSphere DataPower SOA Appliances ---------------------------------------------------------------------- IBM Deutschland Research & Development GmbH Vorsitzender des Aufsichtsrats: Martin Jetter Geschaeftsfuehrung: Dirk Wittkopp Sitz der Gesellschaft: Boeblingen Registergericht: Amtsgericht Stuttgart, HRB 243294
|
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
|