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]

Re: "*|@*|text()" vs. "node()"


The stylesheet should copy all nodes from the input to the output. Only a 
few should be changed, @href is one example for this.

The original stylesheet as you can see it below works correctly!!

As far as I know <xsl:apply-templates/> is the same like 
<xsl:apply-templates select="*|text()"/>, the attributes are missing. So I 
need my extended version. <xsl:apply-templates select="*|@*|text()"/> 
matches all child-elements (not the descendants!), all attributes and all 
text-nodes.

<xsl:choose> as child of <xsl:attribute> is possible. It worked already. 
Furthermore you can look at http://www.topxml.com/xsl/elmxsl_attribute.asp 
or http://www.w3.org/TR/xslt#dtd.

The opening element for <xsl:attribute> is in the template matching 
"*|@*|text()", only the attribute href should be created in the result-tree 
with a new value. <xsl:attribute> is also allowed as child of <xsl:template>.

match="*/@href" makes of course no difference, because an attribute must 
always have an element as parent.

Thanks for your reply, but it doesn't help.

Joerg


Corey Spitzer wrote:

> instead of <xsl:apply-templates select="*|@*|text()"/>, I think you just
> want <xsl:apply-templates> otherwise, you're applying the templates to the
> children of whatever matches the template first and not getting the original
> match.  Also, I think that it's going to match everything so all the
> children 3 levels nested and below are going to be repeated.  As far as the
> attribute, I don't believe you can have <xsl:choose> as a child of
> <xsl:attribute>.  Also, you can't have <xsl:attribute> without an opening
> element before it..  Also, I don't know if it would make a difference, but
> try <xsl:template match="*/@href"> instead of simply match="href"
> 
> 
> -----Original Message-----
> From: owner-xsl-list@lists.mulberrytech.com
> [mailto:owner-xsl-list@lists.mulberrytech.com]On Behalf Of Jörg Heinicke
> Sent: Thursday, October 04, 2001 7:49 AM
> To: xsl-list@lists.mulberrytech.com
> Subject: [xsl] "*|@*|text()" vs. "node()"
> 
> 
> I want to shorten/improve my XSL-code, but a problem occures. Until now I
> had a stylesheet like the following:
> 
> <xsl:template match="*|@*|text()">
>    <xsl:copy>
>      <xsl:apply-templates select="*|@*|text()"/>
>    </xsl:copy>
> </xsl:template>
> 
> <xsl:template match="@href">
>    <xsl:attribute name="href">
>      <xsl:choose>
>        <!-- specifying the value -->
>      </xsl:choose>
>    </xsl:attribute>
> </xsl.template>
> 
> <!-- some more templates -->
> 
> Now I changed "*|@*|text()" to "node()" (both <xsl:template> and
> <xsl:apply-templates>) and I thought it should make no differences, because
> the original XML contains only elements, attributes and text-nodes.
> But now I get an error-message:
> 
> href has an illegal attribute: {1}
> 
> Is this a bug in Xalan, because the priority of the templates doesn't work
> correctly anymore? Or what can be the problem?
> 
> Thanks in advance,
> 
> 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
> 
> 
>  XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> 
> 
> 


-- 

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


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