Subject: RE: [xsl] Normalize-space does not work for node generated from msxml:node-set function From: "Michael Kay" <michael.h.kay@xxxxxxxxxxxx> Date: Tue, 19 Mar 2002 08:36:17 -0000 |
There is no whitespace in the result tree fragment, so there is no way it can be preserved. Whitespace-only text nodes in a stylesheet are always stripped (ie, they have no effect.) Michael Kay Software AG home: Michael.H.Kay@xxxxxxxxxxxx work: Michael.Kay@xxxxxxxxxxxxxx > -----Original Message----- > From: owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx > [mailto:owner-xsl-list@xxxxxxxxxxxxxxxxxxxxxx]On Behalf Of > Macaulay,Malcolm (US) > Sent: 19 March 2002 00:15 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx; Gennady Loskutov; > jeni@xxxxxxxxxxxxxxxx > Subject: [xsl] Normalize-space does not work for node generated from > msxml:node-set function > > > Thanks Jeni and Gennady for the help below. That works, > however I still get a strange behaviour from the node-set function: > > my XML: > > <?xml version="1.0" encoding="UTF-8"?> > > <XMLData> > <ANode> > <ChildNode>A</ChildNode> > <ChildNode>B</ChildNode> > <ChildNode>C</ChildNode> > </ANode> > </XMLData> > > My XSLT: > > <?xml version="1.0" encoding="UTF-8"?> > <xsl:stylesheet version="1.0" > xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > xmlns:msxsl="urn:schemas-microsoft-com:xslt"> > <xsl:variable name="XSLData"> > <ANode> > <ChildNode>A</ChildNode> > <ChildNode>B</ChildNode> > <ChildNode>C</ChildNode> > </ANode> > </xsl:variable> > <xsl:template match="/"> > > <p>Normalised text from node-set function - > spaces not preserved</p> > > <xsl:value-of > select="normalize-space(msxsl:node-set($XSLData)/ANode)"/> > > <p>Normalised text from XML nodes - spaces are > preserved</p> > > <xsl:value-of select="normalize-space(XMLData/ANode)"/> > > </xsl:template> > </xsl:stylesheet> > > The result is: > > Normalised text from node-set function - spaces not preserved > ABC > Normalised text from XML nodes - spaces are preserved > A B C > > Can anyone explain this? > > Thanks in advance > > cheers > > Malcolm > > > > Subject: Re: [xsl] Key function using key strings from msxsl:node-set > generated node. Doesn't work? > > > Hi Gennady, > > > Actually it gives Person by Address node-set, not a string. If you > > use this key, you must supply an Address **element**, which is a > > child of the Person element you are looking for. You are supplying a > > string and therefore getting nothing (as it should be). > > That's not exactly true. If the expression that you use in the use > attribute of xsl:key evaluates to a node set, then you get a number of > entries for the matched node, one for each node in the node set. The > *value* for these keys is still a string value, just a string value of > the node. > > So in: > > <xsl:key name="PersonByAddress" match="/People/Person" > use="Address" /> > > then given that each Person has just one Address, the use attribute > returns a single Address element. The Person element's key value is > the string value of that Address element. It's exactly the same as > defining the key as: > > <xsl:key name="PersonByAddress" match="/People/Person" > use="string(Address)" /> > > Likewise, when you access a key with the key() function, the second > argument always gets converted to a string. There's no need to make > sure that the two expressions (when defining the key and when using > the key) have the same object type. > > Cheers, > > Jeni > > --- > Jeni Tennison > http://www.jenitennison.com/ > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > > > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Normalize-space does not work, Macaulay,Malcolm (US | Thread | Re: [xsl] Normalize-space does not , Jeni Tennison |
RE: [xsl] Re: Selecting Maximum Val, Jeroen Hellingman | Date | [xsl] How can I merge two DTD by us, Stephane . Le-Deaut |
Month |