|
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 |