This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: "*|@*|text()" vs. "node()"
David Carlisle wrote:
>>But when will <xsl:template match="@href"> be selected?
>>
>
> A template is only executed if its match attribute matches a node in the
> current node list (and has highest priority/import precedence)
>
> Since attributes are not in the default selection of apply-templates
> this template will only fire if you explictly include the attribute axis
> in some apply-templates. But I thought you said that you were not
> selecting attributes when you got the error.
>
> As it uses xsl:attribute, then it should generate a runtime error if it
> is not immediately after a new element node has been started in the
> result tree. But if templates are not applied to attributes, then this
> can never happen.
There are a few more templates which apply @href, but they all create a new
element in the result tree. As I said the stylesheet worked before changing
the first template to "node()". So there must be an "auto-apply". I really
tested it with <xsl:apply-templates select="node()"/> in the first template.
>>You can try it out with Xalan.
>>
> Not without a full (small) example stylesheet and source doc, I can't.
This will work with every xml and xsl. You only need an <xsl:attribute> without a new element.
<?xml version="1.0"?>
<root/>
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="root">
<xsl:attribute name="test">test</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
I tried it with the current version 2.2.D11.
Joerg
--
System Development
VIRBUS AG
Fon +49(0)341-979-7435
Fax +49(0)341-979-7409
joerg.heinicke@virbus.de
www.virbus.de
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list