|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Comparing nodes in XPath
At 03:13 PM 1/21/2005, you wrote:
Ok, but that's not the case when using variable. And i change that to Antonio, What you're missing is the concept of the "context node" for evaluating the expression. The expression "Conn" is short for "child::Conn". The expression "./Conn" is short for "self::node()/child::Conn". In the example provided, the context node for the expression "@id=Conn" or "@id=./Conn" is the same -- as Mike said, the connection. (The context node for a predicate is each of the nodes being predicated.) Both of these expressions return the same thing when the context is the same. When you use a variable, you have already bound your Conn child to the variable when the expression is evaluated, so the context node is not a concern. Note that where you bind your variable does matter. If you did extra work to do the same thing, and said <xsl:for-each select="document('connections.xml')/connections/connection">
<xsl:variable name="conn" select="Conn"/>
<xsl:if test="@id = $conn">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>it wouldn't work. (Nor would you, an XSLT expert, expect it to.) But this would: <xsl:variable name="conn" select="Conn"/>
<xsl:for-each select="document('connections.xml')/connections/connection">
<xsl:if test="@id = $conn">
<xsl:value-of select="."/>
</xsl:if>
</xsl:for-each>Right? (And this is the better analogue to what you're doing when your predicate has "@id=$conn") The short answer: you probably want your predicate to read "@id=current()/Conn", though without seeing the rest of the logic it's impossible to be certain. Or just use the variable: we do this all the time. Cheers, Wendell
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








