Subject: Re: [xsl] stylesheet not work when xmlns exist From: Florent Georges <lists@xxxxxxxxxxxx> Date: Sun, 27 Sep 2009 20:28:03 +0000 (GMT) |
Michael Kay wrote: Hi, > > <xsl:template match="/Request"> > > <data> > > <Elem n="{name(.)}"> > > <xsl:for-each select="@*"> > > <xsl:if test="name(.)='System'"> > > <attr n="{name(.)}"> > > <xsl:element name="val"> > > <xsl:attribute name="s"> > > <xsl:value-of select="normalize-space(.)"/> > > </xsl:attribute> > > </xsl:element> > > </attr> > > </xsl:if> > > </xsl:for-each> > > <xsl:apply-templates/> > > </Elem> > > </data> > > </xsl:template> > > I only want to get the "System" attribute and ignore > > all the rest. > Then why not replace the xsl:for-each and xsl:if by > <xsl:for-each select="@System">? > In fact, the whole thing could be rewritten: > <xsl:template match="/Request"> > <data> > <Elem name="Request"> > <attr n="System"> > <val s="{@System}"/> > </attr> > </Elem> > </data> > </xsl:template> Or more precisely: <xsl:template match="/Request"> <data> <Elem name="Request"> <xsl:if test="@System"> <attr n="System"> <val s="{ @System }"/> </attr> </xsl:if> </Elem> </data> </xsl:template> or maybe more intuitively (but depends on the exact problem and context): <xsl:template match="/Request"> <data> <Elem name="Request"> <xsl:apply-templates select="@System"/> </Elem> </data> </xsl:template> <xsl:template match="@*"> <attr n="{ name(.) }"> <val s="{ . }"/> </attr> </xsl:template> Regards, -- Florent Georges http://www.fgeorges.org/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] stylesheet not work when , Michael Kay | Thread | [xsl] Re: [ANN] New XSLT Tool: Cohe, Philip Fearon |
Re: [xsl] Use of xsl:apply-template, ac | Date | [xsl] Re: [ANN] New XSLT Tool: Cohe, Philip Fearon |
Month |