[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: Formatting issues

Subject: Re: Formatting issues
From: ms <mina_hurray@xxxxxxxxx>
Date: Tue, 2 Jan 2007 09:51:55 -0800 (PST)
Re:  Formatting issues
Hi:
 Thank you for all your help. 
Here is the sample XML:

<?xml version="1.0" encoding="UTF-8"?>
<?altova_xslfo E:\User Profiles\n26353\My
Documents\DigitalData\AMDS-0.6.3\Issues\Visit_Conditioning\test.xsl?>
<root>
	<test>
		<level1>
			<text>
				<para>This level should be displayed only if the
conditions are high and low.</para>
			</text>
			<locn>
				<cond1>high</cond1>
				<cond2>low</cond2>
			</locn>
			<level2>
				<text>
					<para>This level should be displayed only if the
conditions are high and deep.</para>
				</text>
				<locn>
					<cond1>high</cond1>
					<cond2>deep</cond2>
				</locn>
			</level2>
		</level1>
		<level1>
			<text>
				<para>This level should be displayed only if the
conditions are high and deep</para>
			</text>
			<locn>
				<cond1>high</cond1>
				<cond2>deep</cond2>
			</locn>
		</level1>
		<level1>
			<text>
				<para>This level should be displayed only if the
conditions are  high and steep</para>
			</text>
			<locn>
				<cond1>high</cond1>
				<cond2>steep</cond2>
			</locn>
			<level2>
				<text>
					<para>This level should be displayed only if the
conditions are high and steep</para>
				</text>
				<locn>
					<cond1>high</cond1>
					<cond2>steep</cond2>
				</locn>
			</level2>
		</level1>
	</test>
</root>

My sample XSLfo:

<?xml version="1.0" encoding="UTF-8"?>
<?altova_samplexml E:\User Profiles\n26353\My
Documents\DigitalData\AMDS-0.6.3\Issues\testdata.xml?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
	<xsl:variable name="val1">high</xsl:variable>
	<xsl:variable name="val2">deep</xsl:variable>
	<xsl:template match="root">
		<fo:root
xmlns:fo="http://www.w3.org/1999/XSL/Format">
			<fo:layout-master-set>
				<fo:simple-page-master master-name="coverPage"
page-height="11in" page-width="8.5in" margin-top="5mm"
margin-bottom="5mm" margin-left="5mm"
margin-right="5mm">
					<fo:region-body
region-name="coverPage-region-body" margin-left="8mm"
margin-right="8mm" margin-top="44mm"
margin-bottom="25mm">
					
					</fo:region-body>
					<fo:region-before
region-name="coverPage-region-before"
precedence="false" extent="44mm"/>
					<fo:region-after
region-name="coverPage-region-after"
precedence="false" extent="50mm"
display-align="after"/>
				</fo:simple-page-master>
				<fo:page-sequence-master master-name="cover">
					<fo:repeatable-page-master-reference
master-reference="coverPage"/>
				</fo:page-sequence-master>
			</fo:layout-master-set>
			<fo:page-sequence master-reference="cover"
font-family="Helvetica" font-size="10pt">
				<fo:static-content
flow-name="coverPage-region-before">
				
				
				</fo:static-content>
				<fo:static-content
flow-name="coverPage-region-after">
				
				</fo:static-content>
				<fo:flow flow-name="coverPage-region-body">
					<fo:block>
						<xsl:apply-templates select="test"/>
					</fo:block>
				</fo:flow>
			</fo:page-sequence>
		</fo:root>
	</xsl:template>
	<xsl:template match="test">
		<fo:block>
			<xsl:apply-templates/>
		</fo:block>
	</xsl:template>
	<xsl:template match="level1">
		<xsl:choose>
			<xsl:when test=".//locn">
				<xsl:if test=".//locn/cond1=$val1 and
.//locn/cond2=$val2">
					<fo:list-block space-before="6pt"
space-before.conditionality="retain">
						<fo:list-item>
							<fo:list-item-label end-indent="label-end()">
								<fo:block>
									<xsl:number format="1"/>
								</fo:block>
							</fo:list-item-label>
							<fo:list-item-body start-indent="body-start()"
end-indent="0pt">
								<fo:block>
									<xsl:apply-templates/>
								</fo:block>
							</fo:list-item-body>
						</fo:list-item>
					</fo:list-block>
				</xsl:if>
			</xsl:when>
			<xsl:otherwise>
		<xsl:call-template name="level">
			<xsl:with-param name="format">1</xsl:with-param>
			</xsl:call-template>
</xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	<xsl:template match="level2">
		<xsl:choose>
			<xsl:when test=".//locn">
				<xsl:if test=".//locn/cond1=$val1 and
.//locn/cond2=$val2">
					<fo:list-block space-before="6pt"
space-before.conditionality="retain">
						<fo:list-item>
							<fo:list-item-label end-indent="label-end()">
								<fo:block>
									<xsl:number format="A"/>
								</fo:block>
							</fo:list-item-label>
							<fo:list-item-body start-indent="body-start()"
end-indent="0pt">
								<fo:block>
									<xsl:apply-templates/>
								</fo:block>
							</fo:list-item-body>
						</fo:list-item>
					</fo:list-block>
				</xsl:if>
			</xsl:when>
			<xsl:otherwise>		<xsl:call-template name="level">
			<xsl:with-param name="format">a</xsl:with-param>
			</xsl:call-template></xsl:otherwise>
		</xsl:choose>
	</xsl:template>
	<xsl:template name="level">
		<xsl:param name="format"/>
		<fo:list-block space-before="6pt"
space-before.conditionality="retain">
			<fo:list-item space-before="6pt">
				<fo:list-item-label end-indent="label-end()">
					<xsl:choose>
						<xsl:when test="$format = '1'">
							<fo:block>
								<fo:inline>
									<xsl:number format="1"/>.</fo:inline>
							</fo:block>
						</xsl:when>
						<xsl:when test="$format = 'A'">
							<fo:block>
								<fo:inline>
									<xsl:number format="A"/>.</fo:inline>
							</fo:block>
						</xsl:when>
						<xsl:when test="$format = '(1)'">
							<fo:block>
								<fo:inline>
									<xsl:number format="(1)"/>
								</fo:inline>
							</fo:block>
						</xsl:when>
						<xsl:when test="$format = '(1)'">
							<fo:block>
								<fo:inline>
									<xsl:number format="(1)"/>
								</fo:inline>
							</fo:block>
						</xsl:when>
						<xsl:when test="$format = '(a)'">
							<fo:block>
								<fo:inline>
									<xsl:number format="(a)"/>
								</fo:inline>
							</fo:block>
						</xsl:when>
						<xsl:when test="$format = '1)'">
							<fo:block>
								<fo:inline>
									<xsl:number format="1)"/>
								</fo:inline>
							</fo:block>
						</xsl:when>
						<xsl:when test="$format = 'a)'">
							<fo:block>
								<fo:inline>
									<xsl:number format="a)"/>
								</fo:inline>
							</fo:block>
						</xsl:when>
					</xsl:choose>
				</fo:list-item-label>
				<fo:list-item-body start-indent="body-start()"
end-indent="0pt">
					<fo:block>
						<xsl:apply-templates/>
					</fo:block>
				</fo:list-item-body>
			</fo:list-item>
		</fo:list-block>
	</xsl:template>
</xsl:stylesheet>

The output PDF look has this:

1 This level should be displayed only if the
conditions are high and low.
A This level should be displayed only if the
conditions are high and deep.
2 This level should be displayed only if the
conditions are high and deep.

Now val1 and val 2 are high and deep. So the expected
output is: 

2 This level should be displayed only if the
conditions are high and deep.

However, instead of 2, it should be numbered 1 since
it is the first level.

Desired output on the PDF would be:

1. This level should be displayed only if the
conditions are high and deep.

Please let me know what my mistake is on this style
sheet. How can I filter the output as well as format
it correctly. 

--- Abel Braaksma <abel.online@xxxxxxxxx> wrote:

> Well, no. I tried to ask you what the output really
> must look like. I 
> have several answers from you that give partial
> info. I can expect this:
> 
> 1 some text
> 1 some other text
> 1 yet other text
> 
> I can expect this:
> 1 some text
> 2 some other text
> 3 yet other text
> 
> I can expect this:
> 1 some text
>     a) some other text
>          ii) yet other text
> 
> I have no idea how to do this.You gave quite an
> extensive XML and it 
> gives all kinds of info, but it does not provide a
> clear clue of what 
> you want. Please:
> 1. diminish the XML by leaving out all non-important
> parts (but make 
> sure it is still valid XML)
> 2. Make a small XSLT that works on that partial XML
> (using your own, 
> partial working techniques)
> 3. run your small XSLT against the small XML and
> 4. show (1), (2) and (3) with explanations to us
> 
> That way, you can (almost) count on it to receive a
> quite quick and to 
> the point answer. It will save you and others a lot
> of time. 
> Furthermore, it will help yourself to understand the
> problem better. 
> Quite often, people find the solutions by narrowing
> the problem domain 
> or by writing down explanatory texts for others.
> 
> Cheers,
> -- Abel
>    http://www.nuntia.com
> 
> ms wrote:
> > Hi:
> >
> > Actually, the text "This has values high and
> steep"
> > was only to indicate that if the conditional
> values
> > were high and steep, then this text should be
> > displayed. The textual matter is not important.
> What
> > is important is the formatting for each level like
> 1,
> > 2, etc.
> >
> > Does that make sense? Please let me know if you
> need
> > more information. 
> >
> > Thanks a lot
> > MS
> > --- Abel Braaksma <abel.online@xxxxxxxxx> wrote:
> 
> 


__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Cast Your Vote

We need your help – Vote for DataDirect XML Products!

  • Best SOA or XML site

Winners and finalists announced at SOA World Conference in November.

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.