Control of the layout when calling the Publisher

If you want to control the behavior of the speedata Publisher without changing any of the files (data.xml or layout.xml), you can do this in two different ways. An example is a PDF that is to be output in different page formats (portrait and landscape) or that you provide a print PDF (with bleed) and an online PDF (with smaller images).

Control via variables

The idea here is to set variables to a certain value before calling them. This is done in the configuration file or on the command line. Example is the following layout (excerpt):

<Layout xmlns="urn:speedata.de:2009/publisher/en"
  xmlns:sd="urn:speedata:2009/publisher/functions/en">

   <Options bleed="0mm" cutmarks="no" />
   <Switch>
      <Case test="sd:variable-exists('output')">
         <Switch>
            <Case test="$output = 'print'">
               <Options bleed="3mm" cutmarks="yes" />
            </Case>
         </Switch>
      </Case>
   </Switch>
   ...
</Layout>

With

sp --var output=print

the variable output is set to the value print. In the configuration file, the entry looks like this:

vars=output=print

Both specifications cause the second command <Options> to be executed and create bleed and crop marks.

Control via --mode

As an alternative to control via variables, it is also possible to control via the mode. The layout above would look like this:

<Layout xmlns="urn:speedata.de:2009/publisher/en"
  xmlns:sd="urn:speedata:2009/publisher/functions/en">

   <Options bleed="0mm" cutmarks="no" />
   <Switch>
      <Case test="sd:mode('print')">
         <Options bleed="3mm" cutmarks="yes" />
      </Case>
   </Switch>
   ....
</Layout>

On the command line, the Publisher is started like this:

sp --mode print

The specification in the configuration file is:

mode=online

The names of the mode can be chosen freely, but should not contain spaces or commas.

Several modes can be specified separated by commas:

sp --mode a,b,c

activates these three modes.

The internal variable _mode also has a comma-separated list of modes, just as specified on the command line.

<PlaceObject>
    <Textblock>
        <Paragraph>
            <Value select="$_mode"></Value>
        </Paragraph>
    </Textblock>
</PlaceObject>

outputs a,b,c for example. The order of the modes in this variable does not have to be in the order in which they were specified when the Publisher was started.