This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: Getting a predicate right


Matt,

> My XML Sheet looks like this:
> <test>
> <colors>
>   <desc id="0" name="blue"/>
>   <desc id="1" name="red"/>
>   <desc id="2" name="white"/>
> </colors>
> <mesg grp="1">Hi how are you?</mesg>
> <mesg grp="0">I am fine.</mesg>
> <mesg grp="2">That is good.</mesg>
> </test>
> In my XSL I am going through the messages and trying
> to match the attribute grp from mesg with the
> attribute id from desc.
> something like this:
> //test/colors/desc[@grp]/@name
> or
> //test/colors/desc[@id = @grp]/@name

You're close, but since your XPath grabs a reference to a new element as the
context node, you need to save off your search string before attempting to
match.  If the <mesg> element is the context node you can do something like
this:

<xsl:template match="mesg">
	<xsl:variable name="grpToMatch" select="@grp" />
	<xsl:value-of select="/test/colors/desc[@id=$grpToMatch]/@name" />
</xsl:template>

Or you can do it the other way around (match on the desc).

Hope that helps.

-Peter 

[Two colo(u)r questions in one afternoon, at least this one was spelled
correctly.]




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]