---
name: "sgml2x"
section: "1"
platform: "linux"
package: "sgml2x"
version: "1.0.0-11.5"
release: "Debian 11 (Bullseye)"
platforms: ["linux"]
url: "https://new.carta.tech/sgml2x"
---

# sgml2x(1)

Easily formats SGML/XML documents using DSSSL style-sheets

## NAME

sgml2x — Easily formats SGML/XML documents using DSSSL style-sheets

## SYNOPSIS

**sgml2x** \[*options*\]   \[*sgmlfile*  \| *xmlfile* \]

*docclass*-2-*targetformat* \[*options*\]   \[*sgmlfile*  \| *xmlfile* \]

## Description

**sgml2x** allows to easily format a SGML or XML  document using DSSSL style-sheets, and provides the following  features:

- •

  Multiple possible style-sheets per document class

- •

  Easy specification of style-sheets using aliases, with  support for parameter inheritance

- •

  Easy integration of new style-sheets by adding a simple  new definition file in a configuration directory

- •

  The caller can specify a PATH-like list of configuration  directories, defaulting to a system-wide, a per-user, and a  per-project configuration directories

- •

  Automatic selection of a default style-sheet to be  used, based on assigned priorities

- •

  Pass arbitrary options to **[jade(1)](/jade/1.md)**

The document-class used to look for the style-sheets, and the  output format, is for now only derived from the name with which  the program is called, so you will want to call this program  through symbolic links like **docbook-2-pdf**.

**sgml2x** is a implemented as a shell wrapper  around **[jade(1)](/jade/1.md)** (or, preferably, **[openjade(1)](/openjade/1.md)**, although  we use the generic name **jade** throughout this  documentation), **[jadetex(1)](/jadetex/1.md)** and other tools.

If there is no **jadetex.cfg** file near the document,  a default one is copied, that enables production of PDF bookmarks.

## Options

- **-c**\|**--catalog** *catalog*

  Use the specified SGML catalog instead of the system  default.

- **-C**\|**--confdirs** *dir-list*

  Use (whitespace-separated) list of configuration  directories.  This option is cumulative, i.e. you can use  several **-C** options and the lists will be  concatenated.

The list elements should be ordered from the most  generic configuration (e.g. system-wide) to the most  specific (e.g. project-wide).

If any directory is provided through this option, the  default directory list will be ignored.

- **-D**\|**--dssslproc** *dsssl-processor*

  Use *dsssl-processor* to apply the  style-sheet, instead of the default one.  This processor has  to support **jade**-like options, such as  **-V**.

When this option is not present, the first found in  the **dssslproc** files from confdirs is taken.  See *"Files"*  for more details.

- **-h**\|**--help**

  Display an help message and exit.

- **-j**\|**--jade** *dsssl-processor*

  Obsolete synonym for **--dssslproc**.

- **--jadetexfilter** *perl-filter*

  Post-process the jadetex output using a perl filter.

This can be useful to force pagebreaks at some  specific places to overcome stylesheet problems, or to force  hyphenations where TeX does not have enough patterns, or do  any other clever transformation you'd think about.

See the **examples/command-lines** 	  file for possible uses.

- **-n**\|**--no-act**

  Print commands instead of running them.  Useful to  learn about lower-level tools, and for debugging the  command-line.

- **-o**\|**--openjade**

  *This option is obsolete*.  **openjade** is now the default when available.  Use  **--dssslproc** or a **dssslproc** configuration  file to force a specific processor.

This option used to use **[openjade(1)](/openjade/1.md)** 	  as a DSSSL processor instead of **[jade(1)](/jade/1.md)**.

- **-O**\|**--jadeopts** *jade-options*

  Additional options to pass to **[jade(1)](/jade/1.md)**.  This option is cumulative, you can specify several of them,  the provided options will be concatenated.

- **-q**\|**--quiet**

  Set verbosity to **quiet**

- **-r**\|**--remarks**

  Render the content of document remarks in the document  (**remark** elements in DocBook 4,  **comment** elements in DocBook 3), making the  produced output an *internal-use-only document*,  printing a bold warning on the cover.

This is a docclass- and style-sheet-specific feature,  and not all style-sheets will use this.

- **-s**\|**--style** *style*

  Select an output style to override the (eventually  document-derived) default.

Styles currently available for a specific document  class and for each output format are dependent on the  contents of the configuration directories, and can be  displayed with the **--help** option.

Note that it is good practice to specify this option  in a build procedure, so that you get reproducible results  regardless of the available style-sheets.

- **-v**\|**--verbose**

  Increase verbosity.  This option can be specified  multiple times.

- **--verbosity** *N*

  Set verbosity to *N*.  The  levels of verbosity are defined as follows:

  - **quiet**

    Only print errors

  - **default**

    Only print errors and warnings

  - **verbose**

    Also print notices

  - **trace**

    Also print significant commands as  they are run (as **--no-act** does).

  - **debug**

    Also print debugging messages

- **-V**\|**--version**

  Print the program version and exit.

## Configuration

**sgml2x** uses a configuration directory  tree instead of a configuration file, so that it is easy for other  packages to plug in with a low risk of breaking an existing  setup.

Styles hierarchies are located in directories named  **styles** in each configuration directory.  Old versions  of this program used to put those hierarchies directly in the  configuration directories.

A configuration directory contains one directory for each  known document class, named with a document class nickname  (e.g. **docbook**).  Those docclass directories contain one  sub-directory for each class of output-format (currently, only  **html** and **print** are supported).

Currently, implementation issues enforce a limitation on  nicknames for document classes and style-sheets: they can only  contain alphanumeric and underscore characters.  This limitation  may be dropped in a future release, but that's not going to happen  before this script gets rewritten in another language.

Each of those directory contain one file per available  style.  The names of these files may only contain alphanumeric  characters, and are used as nicknames for the styles.  This file  contains lines with a **key: value** pattern, with  the following keys being currently supported:

- **Id**

  The public identifier for the style-sheet

- **Desc**

  A short description of the styles, to be displayed in  the help message

- **pdfOverride**, **psOverride**,

  **rtfOverride**, **mifOverride**" 10  A dsssl symbol from the print style-sheet to be set to  **#t** (or a  *symbol*=*value* pair, suitable  as argument to **jade**'s **-V** 	  option), to be used for the given print format.

Only one symbol per override line is allowed.  To  define values for several symbols, use several lines.

- **Inherits**

  The nickname of a style-sheet this one inherits from,  to avoid needless duplication of style definitions.

Currently, this only causes inheritance of the  **\*Override** parameters.

- **Priority**

  An positive integer to help selecting the default  style when one cannot be derived from the document.  Higher  values get higher chance of being taken as default.  Take  care of using low priorities for hyper-specialized styles  for a generic document-type, so that it does not get used by  error.

For example, the current recommended policy for the  DocBook style-sheets derived from Norman Walsh's is as  follows (and may change if experience proves it to be  inadequate).

- 10

  The base style-sheets, which usually must be  customized.

- 0

  Any style-sheet that was written for an  hyper-specialized purpose (e.g. marketing product  sheet).

- 1000

  A default style for all documents produced by an  organization.  Usually a light customization,  featuring layout preferences, the organization's logo,  or such things.

- 10-100

  Miscellaneous generic customizations of the base  style-sheets.

-

  When you write an improved version of a  style-sheet with priority *n*, you  usually want to select a higher priority.

## Files

- **/etc/sgml/sgml2x/**

  - **~/.sgml2x/**

  - **./sgml2x/**

  The default configuration directories, in which the  configuration files are searched for.  See documentation for  **--confdirs** for more details.

- *confdir*/style/

  The hierarchy that defines usable styles.  See *"Configuration"*  for more details.

- *confdir*/dssslproc

  A file containing an ordered list of dsssl processors  to look for, separated by newlines and/or whitespace.  Lines  starting with a **#** character are treated as  comments.  Common values include **openjade** and  **jade**.

-

  DSSSL processors specified here should accept the  **-V** and **-D** jade-compatible command-line  options.

-

  The configuration directories are looked for starting  with the most specific one, so that, with the default  confdirs, the project settings may override user  settings, which in turn may override system settings.

-

  The special value **false** can be used to  stop the search and prevent looking into more generic  directories.  If for example a project must use the  **openjade-1.4devel** command and no other, it can  specify **openjade-1.4devel false** in its  **dssslproc** file.

## Caveats

When using **openjade-1.4devel** as DSSSL processor,  you'll see a complaint about the top-level flow-object generated  by **doctype.dsl**, and automatic determination of the  document-type will fail.  This error is otherwise harmless.  Ideas  of how to deal with this, or confirmation that  **openjade-1.4devel** is too strict, will be appreciated  :)

## The future

Planned features for future releases include:

- •

  Integration of an index generator

- •

  Integration of a pretty-printing engine for code  examples

- •

  Specification of transformations to be chained

- •

  Declaration of subset docclasses to allow the use with  any docclass of the style-sheets that apply to its superset  docclasses.

- •

  Work in a temporary location so as not to pollute the  working directory with temporary files.  This is not as easy  as it sounds, because it breaks a document refers to image  files using relative paths.  That may be seen as a jade bug,  however.

Browse the full TODO list and send us more ideas !

## Copyright

Copyright © 2001-2003 Alcove & Yann Dirson.

**sgml2x** is licensed under the GNU General  Public License, version 2.

This documentation is licensed under the GNU Free  Documentation License, version 1.

## Contact us

**sgml2x** is part of the *AlcoveBook*  *project (link to URL http://www.alcove-labs.org/en/software/alcovebook/)* .  Please use the *AlcoveBook*  *mailing lists (link to URL https://savannah.gnu.org/mail/?group\_id=533)*  to get in touch with developers and  users.

The list of bugs and feature requests is available *through a Web*  *interface (link to URL https://savannah.gnu.org/support/?group\_id=533)* .  Please use it to submit problems and ideas.

## See also

**[openjade(1)](/openjade/1.md)**, **[jade(1)](/jade/1.md)**, **[jadetex(1)](/jadetex/1.md)**,  **[collateindex.pl(1)](/collateindex.pl/1.md)**.
