David Carlisle wrote:
select="child::foo selects the parent of the current node,
match="child::foo" asks if that node is the child of anything.
So unless you find it surprising that something can both have a parent
and be a parent, I'm not sure what is surprising here?
I think Andrew meant that many people start out writing their select
statements equal to their matching patterns. And it takes many people a
long time (unless when going to a good class or reading a good
introductory book) to find out that it is not necessary to have each
select statement matched with a pattern:
<xsl:template match="/">
<xsl:apply-templates select="root"/>
</xsl:template>
<xsl:template match="root">
<html> ...
<xsl:apply-templates select="books" />
</html>
</xsl:template>
<xsl:template match="books">
<h1>a lot of books</h1>
<xsl:apply-templates select="book" />
</xsl:template>
<xsl:template match="book".... etc
If you change that picture to something along the lines of
match="child::book" and select="parent::book" people get confused
(especially to why it isn't working the way they expect it).
Don't get me wrong, this can be a very legitimate approach, but many
people don't know what happens when they have to take out or add one
layer of parents or children and how it affects the current templates,
resulting in trial and error, resulting in weird incomprehensible code.
But we've all been beginners and once someone points us to the right
course or book, we all learn it well (I hope) + 10 years on the XSL-List ;)
Cheers,
-- Abel Braaksma
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--