Re: [xsl] Match pattern should get child content but gets sib's content also

Subject: Re: [xsl] Match pattern should get child content but gets sib's content also
From: Joerg Heinicke <joerg.heinicke@xxxxxx>
Date: Fri, 26 Apr 2002 20:31:52 +0200
Hello Tom,

I must say, that you are wrong. The built-in template has the lowest priority, so when the node <aValue> is accessed and a template is searched for it, the processor uses Doug's template, not the built-in on.
The built-in templates are similar to


<xsl:template match="node()">
  <xsl:apply-templates/>
</xsl:template>

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

As a test for it, use Doug's template/stylesheet and change it a bit, so that a text will be added by this template:

<xsl:template match="link/aValue">
    <xsl:text>from template: </xsl:text>
    <xsl:value-of select="."/>
</xsl:template>

You will see it ;-)

Joerg

Your problem is that the processor never gets to your template at all, since
there is no path specified from the root to get there.  You should put that
path into the select attribute of the calling template.  Here's one way (not
necesssarily the best but good for highlighting the point):

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:template match='/moduleExternal'>
<results>
 <xsl:apply-templates select='//link/aValue'/>
</results>
</xsl:template>

<xsl:template match="aValue">
<xsl:value-of select="."/>
</xsl:template>

<xsl:template match='*'/>
</xsl:stylesheet>

Tom P

...

====== Here's my simplified xml doc ========

<?xml version = "1.0" encoding = "UTF-8"?>
<?xml-stylesheet href =
'file:///C:/Documents%20and%20Settings/doug/My%20Documents/ADE3.xsl'

type =

'text/xsl'?>

<moduleExternal xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance";>
<parm>
<link>
<aValue>Hello</aValue>
</link>
</parm>
<parm>
<constraint>
<aValue>OOPS</aValue>
</constraint>
<link>
<aValue>World</aValue>
</link>
</parm>
</moduleExternal>

======== AND THE XSL file ==========
<?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>

<xsl:template match="link/aValue">
<xsl:value-of select="."/>
<xsl:text> </xsl:text>
</xsl:template>

</xsl:stylesheet>


====== I'm opening the xml file in IE6.0 and what I get is this =====


Hello OOPSWorld

=========== This may be obvious to everyone but I thought that a match
pattern of "link/aValue" would skip over the <aValue> child of

<constraint>

and get only <aValue> content that is a child of <link>.

TIA for any help with this... I've not been able to successfully wade
through all of the posts in biglist.
Best regards,
Doug Zirbel


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