Subject: [xsl] formatting text with nested features From: "Kloeck, Erwin" <Erwin.Kloeck@xxxxxx> Date: Fri, 24 Oct 2003 11:56:13 +0200 |
Hi, I have the following xml that I want to format in the obvious way with xsl:fo. <?xml version="1.0" encoding="UTF-8"?> <main> <body> <p> normal normal <b>bold bold <i>bold-italic</i> bold bold<sub>3</sub> </b> normal<sup>5</sup> normal </p> </body> </main> Currently my xsl looks like shown below. In it I select all text() nodes within a paragraph and then check for the combinations of attributes that hold. This worked OK for bold and italic, but when more attributes are used, I get overwhelmed by the combinations. So what is the clever way to do this? Thanks a lot. Erwin <<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:output method="xml" indent="yes"/> <xsl:template match="/"> <xsl:apply-templates/> </xsl:template> <xsl:template match="/main/body"> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> <fo:simple-page-master master-name="DINA4" page-height="297mm" page-width="210mm" margin-top="25.0mm" margin-bottom="25.0mm" margin-left="25.0mm" margin-right="25.0mm"> <fo:region-body/> </fo:simple-page-master> <fo:page-sequence-master master-name="master-sequence"> <fo:repeatable-page-master-reference master-reference="DINA4"/> </fo:page-sequence-master> </fo:layout-master-set> <fo:page-sequence master-reference="master-sequence"> <fo:flow flow-name="xsl-region-body"> <xsl:for-each select="//p"> <fo:block font-family="Times-Roman" space-before="10pt"> <xsl:for-each select=".//text()"> <xsl:choose> <xsl:when test="ancestor::i and ancestor::b"> <fo:inline font-style="oblique" font-weight="bold" space-after="8pt" color="green"> <xsl:value-of select="."/> </fo:inline> </xsl:when> <xsl:when test="ancestor::i and not(ancestor::b)"> <fo:inline font-style="oblique" space-after="8pt" color="cyan"> <xsl:value-of select="."/> </fo:inline> </xsl:when> <xsl:when test="not(ancestor::i) and ancestor::b"> <fo:inline font-weight="bold" space-after="8pt" color="magenta"> <xsl:value-of select="."/> </fo:inline> </xsl:when> <xsl:when test="not(ancestor::i) and not(ancestor::b)"> <fo:inline space-after="8pt" color="black"> <xsl:value-of select="."/> </fo:inline> </xsl:when> <xsl:when test="ancestor-or-self::sub"> <fo:inline font-family="Times-Roman" font-size="8pt" vertical-align="sub" color="red"> <xsl:value-of select="."/> </fo:inline> </xsl:when> <xsl:when test="ancestor-or-self::sup"> <fo:inline font-family="Times-Roman" font-size="8pt" vertical-align="super"> <xsl:value-of select="."/> </fo:inline> </xsl:when> <xsl:otherwise> <xsl:value-of select="."/> </xsl:otherwise> </xsl:choose> </xsl:for-each> </fo:block> </xsl:for-each> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template> </xsl:stylesheet> .............................. Erwin Kloeck Produktentwicklung Oestreicher + Wagner Medientechnik GmbH Frankenthaler Strasse 20 D-81539 Muenchen Fon +49 (0)89-68961 216 Fax +49 (0)89-68961 271 XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Encoding Error?, SHEIKH Sajjad | Thread | Re: [xsl] formatting text with nest, David Carlisle |
Re: [xsl] looping, moving through e, james walker | Date | RE: [xsl] position() returns what?, Michael Kay |
Month |