At 01:41 PM 10/23/2003, you wrote:
Thanks . That worked! However I am getting all the default text nodes printed
out. The text in "default" and "units" node is printing out. I have template
match defined (for units and default ) but its still printing "degrees" and
"unspecified"
in the output. Is it possible to have a single rule that will eliminate the
default behaviour of printing text nodes. ? Thanks!
It is, but you don't want to use it -- it will affect the way text nodes
are handled in general, whereas you only want to suppress particular text
nodes.
If you want to suppress the contents of <units>, for example, match it with
an empty template, as in
<xsl:template match="units"/>
which says "when a units element is matched, do nothing with it".
Instead, you have
<xsl:template match="units">
<xsl:apply-templates/>
</xsl:template>
which says "when a units element is matched, apply templates to its
children" -- whereas you are now telling us you don't want to see the children.
Remove the apply-templates instruction and the children (in this case the
text node inside <units>) won't be matched or processed, and won't appear
in the output.
Cheers,
Wendell
Here is a part of xml
<Attribute name="restrictThroughputAfterRmax" label="Restrict Throughput
After Reaching Rmax" ReleaseIntroduced="7">
<descr/>
<type t="RestrictAfterRmax"/>
<default>Unspecified</default>
<units>degrees</units>
</Attribute>
XSL Below----
?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output omit-xml-declaration="yes" indent="no" encoding="iso-8859-1"
/>
<xsl:template match="objType">
<xsl:value-of select="@name"/>,<xsl:value-of
select="@ReleaseIntroduced"/>,<xsl:value-of select="@ReleaseChanged"/>
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="Attribute">
<xsl:apply-templates/>
<xsl:value-of select="@name"/>, <xsl:value-of
select="@ReleaseIntroduced"/>, <xsl:value-of select="@ReleaseChanged"/>
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="units">
<xsl:apply-templates/>
</xsl:template>
<xsl:template match="default">
<xsl:apply-templates/>
</xsl:template>
<xsl:template
match="*[self::objType or self::Attribute]
[not(@ReleaseChanged = 7
or
@ReleaseIntroduced = 7
)
] "/>
</xsl:stylesheet>
Dimitre Novatchev wrote:
> In the template matching "objType" you have to allow that the templates
> matching and applying process should continue.
>
> As is now, no "Attribute" elements are processed because they happen to be
> descendents of "objType".
>
> So you have to add:
>
> <xsl:apply-templates/>
>
> at the end of the code of the template matching "objType".
>
> =====
> Cheers,
>
> Dimitre Novatchev.
> http://fxsl.sourceforge.net/ -- the home of FXSL
>
> "jayanti" <jayanti(_at_)watchmark(_dot_)com> wrote in message
> news:3F96FF56(_dot_)2F6F146E(_at_)watchmark(_dot_)com(_dot_)(_dot_)(_dot_)
> > Hi,
> > My xml is listed below.
> >
> > <?xml version = '1.0' encoding = 'utf-8'?>
> > <DB1xEV-DO>
> > <typedef .....
> > .......
> >
> > </typedef>
> > <objType name="Cell" label="BTS" ReleaseIntroduced="1"
> > ReleaseChanged="7">
> > <Description>This is the description</Description>
> > <Attribute name="CellSiteId" label="BTS ID" ReleaseIntroduced="1"
> > ReleaseChanged="7">
> > ...
> > </Attribute>
> > <Attribute name="btsName" label="BTS Name" ReleaseIntroduced="7">
> >
> > ....
> > </Attribute>
> > <Attribute name="constantPilot" label="Constant Pilot Mode"
> > ReleaseIntroduced="1">
> > ......
> > </Attribute>
> > <Attribute name="idleModeGain" label="Idle Mode Gain"
> > ReleaseIntroduced="1">
> > <descr/>
> > </Attribute>
> > </objType>
> > </DB1xEV-DO>
> >
> > -- xsl is below---
> >
> > <?xml version="1.0"?>
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> > version="1.0">
> > <xsl:output omit-xml-declaration="yes" indent="no"
> > encoding="iso-8859-1" />
> > <xsl:template match="objType">
> > <xsl:value-of select="@name"/>,<xsl:value-of
> > select="@ReleaseIntroduced"/>,<xsl:value-of select="@ReleaseChanged"/>
> > </xsl:template>
> >
> > <xsl:template match="Attribute">
> > <xsl:value-of select="@name"/>, <xsl:value-of
> > select="@ReleaseIntroduced"/>, <xsl:value-of select="@ReleaseChanged"/
> > >
> > <xsl:value-of select="."/>
> > </xsl:template>
> >
> > <xsl:template
> > match="*[self::objType or self::Attribute]
> > [not(@ReleaseChanged = 7
> > or
> > @ReleaseIntroduced = 7
> > )
> > ] "/>
> > </xsl:stylesheet>
> >
> >
> > My problem is that the above xsl produces only the objType attributes in
> >
> > the output not the attributes. Why is that ? and how can I get an output
> >
> > that looks like the following:
> > objType = Cell
> > AttributeName = CellSiteID
> > AttributeName = BtsName
> > .etc...
> >
> > thanks in advance
> > j
> >
> >
> > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
> >
> >
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
======================================================================
Wendell Piez
mailto:wapiez(_at_)mulberrytech(_dot_)com
Mulberry Technologies, Inc. http://www.mulberrytech.com
17 West Jefferson Street Direct Phone: 301/315-9635
Suite 207 Phone: 301/315-9631
Rockville, MD 20850 Fax: 301/315-8285
----------------------------------------------------------------------
Mulberry Technologies: A Consultancy Specializing in SGML and XML
======================================================================
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list