xsl-list
[Top] [All Lists]

Re: [xsl] XSLT for XSL-FO internal-destination

2009-11-20 14:15:28
David,

I'm still not quite clear about how to connect the id from the href to the id 
at the heading of each page. Just to clarify, here is a simplified stylesheet 
(test.xsl), XML table of contents page (text.xml), and two XHTML source files 
(file_one.htm and file_two.htm). I'm calling the text.xml file that points to 
the file_one.htm and file_two.htm source files.

For the purposes of this example, I've moved all the files into the same 
directory, but is the purpose of the translate function merely to remove 
special characters the directory path in order to create an id? If so, perhaps 
it's not necessary in this latest example:

--------------------
test.xsl
--------------------

<?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:template match="/">
   <fo:root>
          <fo:layout-master-set>

    <!-- Simple Page Master for body -->
    <fo:simple-page-master
        master-name="only"
        page-height="29.7cm"
        page-width="15cm"
        margin-top="1cm"
        margin-bottom="2cm"
        margin-left="1cm"
        margin-right="1cm">
                <fo:region-body
                           region-name="xsl-region-body"
                           margin="2cm" />
                <fo:region-before
                           region-name="xsl-region-before"
                           extent="3cm"
                                display-align="before" />
                <fo:region-after region-name="footer" extent="0.5in"/>
                <fo:region-start
                                region-name="xsl-region-start"
                                 extent="2cm"/>
                <fo:region-end
                                region-name="xsl-region-end"
                                 extent="2cm"/>
    </fo:simple-page-master>
    </fo:layout-master-set>
            
    <!-- Page sequence for body pages -->
        <fo:page-sequence master-reference="only" format="1">
             <fo:static-content flow-name="footer">
                <fo:block text-align="center">
                   <fo:page-number/>
                 </fo:block>
            </fo:static-content>
              <fo:flow flow-name="xsl-region-body">
                   <fo:block>
                        <xsl:for-each select="//TocEntry">
                         <!--Added id here for each page -->
                                      <fo:block id="{(_at_)Link}"/>
                            <xsl:for-each select="document(@Link)//body">
                              <xsl:apply-templates/>
                            </xsl:for-each>

                        </xsl:for-each>
                         <fo:inline keep-together.within-line="always"/>
                   </fo:block>
              </fo:flow>
   </fo:page-sequence>
</fo:root>
</xsl:template>

<xsl:template match="p|P">
    <fo:block  
      font-family="Arial"
      font-size="10pt"
      space-before="12pt"
      space-after="12pt"
      text-align="justify">
                 <xsl:apply-templates/>
    </fo:block>
</xsl:template>

<xsl:template match="a|A">
   <fo:inline>
      <fo:basic-link color="blue">
              <xsl:attribute name="internal-destination">
                 <xsl:value-of select="translate(@href,':/','')"/>
                  <xsl:apply-templates />
              </xsl:attribute>
              <xsl:apply-templates/>
      </fo:basic-link>
    </fo:inline>
</xsl:template>

</xsl:stylesheet>

--------------------
test.xml (acts as a table of contents in online help)
--------------------
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="test.xsl"?>

<Toc
  Version="1">
    <TocEntry
      Title="file_one.htm"
      Link="file_one.htm" />
    <TocEntry
      Title="file_two.htm"
      Link="file_two.htm" />
</Toc>

--------------------
file_one.htm
--------------------
<?xml version="1.0" encoding="utf-8"?>
<html>
    <head>
       <title> </title>
    </head>
    <body>
        <p>Link example: <a href="file_two.htm">Link to file two. </a> </p>
    </body>
</html> 

--------------------
file_two.htm
--------------------
<?xml version="1.0" encoding="utf-8"?>
<html>
    <head>
       <title> </title>
    </head>
    <body>
        <p>Text in file two. </p>
    </body>
</html> 

Thanks,

Rob


--- On Fri, 11/20/09, David Carlisle <davidc(_at_)nag(_dot_)co(_dot_)uk> wrote:

From: David Carlisle <davidc(_at_)nag(_dot_)co(_dot_)uk>
Subject: Re: [xsl] XSLT for XSL-FO internal-destination
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Cc: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Date: Friday, November 20, 2009, 8:48 AM


well you're leaving me to guess a lot about your uinput
structure, but
I'd guess that 

               
   <fo:block id="{(_at_)href}">

           
        <xsl:for-each
select="//TocEntry">
           
           
<xsl:for-each select="document(@Link)//body">
               
           
  <xsl:apply-templates/>


just puts in a single id (with possibly empty value) at the
top of teh
document
you want an id for each file inclusion so perhaps




           
        <xsl:for-each
select="//TocEntry">
               
               
      <fo:block id="{(_at_)Link}"/>
           
           
<xsl:for-each select="document(@Link)//body">
               
           
  <xsl:apply-templates/>
David

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered
in England
and Wales with company number 1249803. The registered
office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United
Kingdom.

This e-mail has been scanned for all viruses by Star. The
service is
powered by MessageLabs. 
________________________________________________________________________

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--






--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--