Subject: Re: [xsl] Novice Question - matching entire text children From: Hermann Stamm-Wilbrandt <STAMMW@xxxxxxxxxx> Date: Tue, 21 Dec 2010 15:11:43 +0100 |
(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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Novice Question - matchin, Wendell Piez | Thread | Re: [xsl] Novice Question - matchin, Wendell Piez |
Re: [xsl] flat xml tree to indent o, Michael Kay | Date | Re: [xsl] flat xml tree to indent o, Matthieu Ricaud-Duss |
Month |