This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
paragraph style problem
I am trying to write stylesheet to output html based on xml file which looks
like the below for paragraph bulleting and indenting
<?xml version="1.0"?>
<testParagraph >
<columnText>
<paragraph style="Normal" leftIndent="18" listType="wdListBullet"
listLevelNumber="1" listString="?" listValue="1" listNumber="1">first
wdbulleted(UL) para</paragraph>
<paragraph style="Normal" leftIndent="18" listType="wdListBullet"
listLevelNumber="1" listString="?" listValue="2" listNumber="1">second
bulleted(UL) para</paragraph>
<paragraph style="Normal" leftIndent="18" listType="wdListBullet"
listLevelNumber="2" listString="?" listValue="1" listNumber="1">first
buleted(UL) para in second level</paragraph>
<paragraph style="Normal" leftIndent="18" listType="wdOutlineNumbering"
listLevelNumber="1" listString="1." listValue="1" listNumber="1">first
buleted(OL) para in first level</paragraph>
<paragraph style="Normal" leftIndent="18" listType="wdOutlineNumbering"
listLevelNumber="1" listString="2." listValue="2" listNumber="1">first
buleted(OL) para in first level</paragraph>
</columnText>
</testParagraph>
where the attribute 'listType' value is whether <UL>(wdListBullet) or
<OL>(outlineNumbered) and
attribute 'listLevelNumber' tells about how deep your UL or OL is and
attribute 'listString' can be ignored for <UL>'s but for <OL> it could be 1.
or a. etc.
I was trying to solve looking at following::siblings and preceding::siblings
listValues,listStrings and listLevelNumbers, but failing to recursively
traverse the entire columnText and if try to solve the recursive traverse
the UL's and OL's are messing up.
any ideas??????????????
Ravi
----- Original Message -----
From: mohamed <mohamed@b-bop.com>
To: <xsl-list@mulberrytech.com>
Sent: Wednesday, February 02, 2000 3:41 PM
Subject: Re: Fw:
> Thanks Steve, I like your solution a lot but for some reason it's giving
me
> a
> java.net.MalformedURLException: :
java.lang.StringIndexOutOfBoundsException:
> String index out of range: 0
>
> at this line
> > <xsl:element name="{document('')/*/xsl:template[@name='attr-map']
> > /map[@attr=name($attr-set[1])]/@elem}">
>
> any ideas?
>
> ----- Original Message -----
> From: Steve Tinney <stinney@sas.upenn.edu>
> To: <xsl-list@mulberrytech.com>
> Sent: Tuesday, February 01, 2000 9:31 PM
> Subject: Re: Fw:
>
>
> > > mohamed wrote:
> > >
> > > I'm trying to call templates based on attribute names:
> > >
> > > <?xml version="1.0"?>
> > > <testText >
> > > <text bold="yes">WITH BOLD</text>
> > > <text bold="yes" italic="yes"> WITH BOLD AND ITALIC</text>
> > > </testText>
> > > so I declared templates that are called and match bold and italics,
> > >
> > > <xsl:template match="bold" name="bold">
> > > <b>
> > > <xsl:apply-templates/>
> > > </b>
> > > </xsl:template>
> > >
> > > <xsl:template match="italics" name="italics">
> > > <i>
> > > <xsl:apply-templates/>
> > > </i>
> > > </xsl:template>
> > >
> > > and I want to get an output as follows:
> > > <b>WITH BOLD</b>
> > > <b><i>WITH BOLD AND ITALIC</i></b>
> >
> > Here is a version which marries recursion and an in-sheet map of
> > attribute names to element names to produce something which is a bit
> > funky to read, but very easy to maintain if you have a 1:1 correlation
> > of attribute names to elements---you just add entries to the map.
> >
> > Steve
> >
> > <xsl:stylesheet version="1.0"
> > xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> >
> > <xsl:output method="html" indent="yes"/>
> >
> > <xsl:template name="attr-map">
> > <map attr="bold" elem="b"/>
> > <map attr="italic" elem="i"/>
> > </xsl:template>
> >
> > <xsl:template match="/">
> > <xsl:apply-templates/>
> > </xsl:template>
> >
> > <xsl:template match="testText/text">
> > <xsl:call-template name="format-by-attribute"/>
> > </xsl:template>
> >
> > <xsl:template name="format-by-attribute">
> > <xsl:param name="attr-set" select="@*[.='yes']"/>
> > <xsl:variable name="nattr" select="count($attr-set)"/>
> > <xsl:choose>
> > <xsl:when test="$nattr = 0">
> > <xsl:apply-templates/>
> > </xsl:when>
> > <xsl:otherwise>
> > <xsl:element name="{document('')/*/xsl:template[@name='attr-map']
> > /map[@attr=name($attr-set[1])]/@elem}">
> > <xsl:choose>
> > <xsl:when test="$nattr = 1">
> > <xsl:apply-templates/>
> > </xsl:when>
> > <xsl:otherwise>
> > <xsl:call-template name="format-by-attribute">
> > <xsl:with-param name="attr-set"
> > select="$attr-set[position()>1]"/>
> > </xsl:call-template>
> > </xsl:otherwise>
> > </xsl:choose>
> > </xsl:element>
> > </xsl:otherwise>
> > </xsl:choose>
> > </xsl:template>
> >
> > </xsl:stylesheet>
> >
> >
> > 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