Have a look at how xsl:value-of works. Your select attributes evaluate to node-sets. The xsl:value-of element then converts those node-sets to strings as if by call to the string function. The string function converts a node-set to a string by returning the string-value of the node in the node-set that is first in document order.
For your first xsl:value-of, the select evaluates to a node-set containing a single Element node, <alpha>. The string-value of this node is the concatenation of all the string values of all text node descendants of <alpha> which is what you see. For your second xsl:value-of, the select evaluates to a node set containing two Element nodes, <beta>. The string-value of this node-set is the concatenation of all the string values of all the text node descendants of the -first- <beta> element, which is what you see. Perhaps you want xsl:copy-of? HTH, Gary > -----Original Message----- > From: Steve Sullivan [mailto:[EMAIL PROTECTED] > Sent: Thursday, February 27, 2003 2:40 PM > To: [EMAIL PROTECTED] > Subject: value-of misses children > > > Hi, > > I'm trying to select all the text of a set of nodes, but > it fails. What am I doing wrong here? > When I use: <xsl:value-of select="alpha/beta"/> > it only includes the FIRST beta under alpha, > not all betas under alpha. > > ========= begin testc.xml =========== > <?xml version="1.0" encoding="UTF-8"?> > <alpha> > <beta>bb1</beta> > <beta>bb2</beta> > <gamma>gg2</gamma> > </alpha> > > ========= begin testc.xsl =========== > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > version="1.0" > > > <xsl:output method="xml" > encoding="UTF-8" > indent="yes" > /> > > > <xsl:template match="/"> > <allAlpha> > <xsl:value-of select="alpha"/> > </allAlpha> > > <allBetas> > <xsl:value-of select="alpha/beta"/> > </allBetas> > </xsl:template> > > </xsl:stylesheet> > > ======== Run xalan: ============= > > java org.apache.xalan.xslt.Process -in testc.xml -xsl > testc.xsl -out outc.xml > > > ========= begin outc.xml =========== > <?xml version="1.0" encoding="UTF-8"?> > <allAlpha> > bb1 > bb2 > gg2 > </allAlpha> > <allBetas>bb1</allBetas> > > =============================== > > Question: why doesn't the <allBetas> element include bb2? > How can I get <allBetas> to include ALL the betas? > I'm running xalan-j_2_4_1 with Sun JDK 1.4. > > Many thanks! > > Steve > > > ======================================== > Steve Sullivan [EMAIL PROTECTED] > > Mathcom Solutions Inc.: Custom Software Development. > * Mathematical optimization, simulation, and modeling. > * Data mining, information retrieval. > * Java, XML, C++, Mathematica, Matlab, XSLT, XQuery, > SOAP, RMI, ... > http://www.mathcom.com 303-494-7115 ========================================
