docbook-apps

  • 1.  ANNOUNCE: DocBook 5 XSL 1.72.0 released

    Posted 01-24-2007 08:52
    The DocBook Project announces the first release of the DocBook 5 XSL
    Stylesheets in the SourceForge downloads area. The Docbook 5 XSL 1.72.0
    package is available for download from the project website:

    http://docbook.sf.net/files/docbook5-xsl/latest
    http://sourceforge.net/projects/docbook

    The DocBook 5 XSL Stylesheets are the same as the regular 1.72.0 stylesheet
    release except that the templates match on elements in the DocBook
    namespace. Below is the README included with the package.


    DocBook 5 XSL stylesheets
    ===========================================
    This package contains a release of XSL stylesheets
    for processing DocBook 5 documents. The stylesheets are
    the same as the concurrent stylesheet release except that
    the templates match on elements in the DocBook namespace.

    Note, the stylesheets in these directories have
    not yet been converted to use the DocBook 5 namespace:

    slides
    website
    roundtrip


    Background
    -------------
    DocBook 5 differs from preceding versions of DocBook because
    its elements are in a namespace "http://docbook.org/ns/docbook".
    Because the elements are in a namespace, the regular
    DocBook XSL templates do not match on the elements.
    In XSLT, a match attribute must explicitly specify
    the namespace prefix to match an element in that namespace
    (the default namespace does not apply to pattern matches).

    The regular stylesheets are able to process DocBook 5
    documents now, because they preprocess a DB5 document to
    remove the namespace. When the regular stylesheet
    detects that the root element is in the namespace, it
    processes the document with mode="stripNS" to copy all
    the nodes to a variable, but without the DocBook namespace.
    Then it converts the variable to a nodeset, and processes
    the nodeset with the regular templates.

    The alternative approach is to create a set of templates
    that match on the native namespace of DocBook 5 documents.
    These stylesheets do that.

    These stylesheets completely mimic the behavior of the
    existing stylesheets. These are not XSLT 2.0 stylesheets,
    and they do not have any other significant changes than handling
    the namespaced elements.

    The two main advantages of these stylesheets are:

    a. You can write customization layers using the DocBook namespace.

    b. The xml:base of the root element is not lost during processing
    (so things like images and the olink database can be found
    more easily).


    How these stylesheets were produced
    ----------------------------------------
    These stylesheets were created from a DocBook XSL
    snapshot. Each xsl file was processed with a
    Perl script and its output placed in a parallel
    directory tree. Any non-xsl files were simply copied
    into place.

    Perl was used because of its excellent regular expression
    handling, and because Perl is able to preserve all whitespace.
    This retains the pretty-printed format that makes
    the stylesheets easier to read and understand.

    The stylesheet transforms each XSL match, select, test,
    count, from, use, and elements attribute to add a "d:"
    prefix to each element referenced in the attribute.
    For example:

    <xsl:template match="para">

    becomes:

    <xsl:template match="d:para">

    In addition, each stylesheet file has a namespace declaration
    added in its root element:

    <xsl:stylesheet xslns:d="http://docbook.org/ns/docbook"

    The combination of these two changes means that the templates
    now recognize DocBook 5 elements in their native namespace.


    How to use these stylesheets
    --------------------------------
    A DocBook 5 document has the DocBook namespace declaration
    in the root element, along with the version attribute:

    <book xslns="http://docbook.org/ns/docbook" version="5.0">

    You can process a DocBook 5 document with these stylesheets
    using any XSLT processor, including xsltproc, Saxon 6 or 8,
    and Xalan. Use these stylesheets as you would a stylesheet
    from the regular distribution (except for slides, website,
    and roundtrip).

    If you happen to process a DocBook document whose root element
    is without the namespace declaration, the stylesheet
    does not fail. Rather, it detects that the document
    does not have the namespace, and preprocesses it to add the
    namespace declaration to all elements in the document.
    In a manner similar to stripNS, it copies the elements
    to a variable while adding the namespace, converts the
    variable to a nodeset, and then processes the nodeset with
    the namespace-aware templates.

    If the stylesheet encounters an element from your file
    for which the stylesheet has no matching template,
    it reports the unmatched element. In these stylesheets,
    it also reports the namespace URI that the element has.


    Customizing these stylesheets
    --------------------------------
    These stylesheets are customized with a customization
    layer in the same manner as for the regular stylesheets,
    with two differences.

    When you create a customization layer, you must do two things:

    a. Add the namespace declaration (with a prefix of your choice):

    <xsl:stylesheet xslns:d="http://docbook.org/ns/docbook"

    b. Use the namespace prefix on all DocBook element names:

    <xsl:template match="d:formalpara">

    Be sure to include the namespace prefix on all element
    references, including those in match, select, and test
    attributes, even when using an axis specifier. Here are
    some examples:

    <xsl:if test="d:title">

    <xsl:apply-templates select="d:title" mode="list.title.mode"/>

    <xsl:apply-templates
    select="*[not(self::d:listitem or self::d:title
    or self::d:titleabbrev)] |
    comment()[not(preceding-sibling::d:listitem)] |
    processing-instruction()[not(preceding-sibling::d:listitem)]"/>

    Failure to add the prefix to an element name will cause
    the stylesheet to silently not match the intended element,
    with consequences that are most likely undesirable.


    Bob Stayton
    Sagehill Enterprises
    DocBook Consulting
    bobs@sagehill.net






  • 2.  Re: [docbook-apps] ANNOUNCE: DocBook 5 XSL 1.72.0 released

    Posted 01-24-2007 09:14
      |   view attached
    -----BEGIN PGP SIGNED MESSAGE-----
    Hash: SHA1

    Hi all,

    Thanks Bob for this extensive explanation.

    Would the Perl script you describe be suitable to migrate customization
    layers? If so is it available somewhere?

    Camille.

    Bob Stayton a écrit :
    > The DocBook Project announces the first release of the DocBook 5 XSL
    > Stylesheets in the SourceForge downloads area. The Docbook 5 XSL 1.72.0
    > package is available for download from the project website:
    >
    > http://docbook.sf.net/files/docbook5-xsl/latest
    > http://sourceforge.net/projects/docbook
    >
    > The DocBook 5 XSL Stylesheets are the same as the regular 1.72.0
    > stylesheet release except that the templates match on elements in the
    > DocBook namespace. Below is the README included with the package.
    >
    >
    > DocBook 5 XSL stylesheets
    > ===========================================
    > This package contains a release of XSL stylesheets
    > for processing DocBook 5 documents. The stylesheets are
    > the same as the concurrent stylesheet release except that
    > the templates match on elements in the DocBook namespace.
    >
    > Note, the stylesheets in these directories have
    > not yet been converted to use the DocBook 5 namespace:
    >
    > slides
    > website
    > roundtrip
    >
    >
    > Background
    > -------------
    > DocBook 5 differs from preceding versions of DocBook because
    > its elements are in a namespace "http://docbook.org/ns/docbook".
    > Because the elements are in a namespace, the regular
    > DocBook XSL templates do not match on the elements.
    > In XSLT, a match attribute must explicitly specify
    > the namespace prefix to match an element in that namespace
    > (the default namespace does not apply to pattern matches).
    >
    > The regular stylesheets are able to process DocBook 5
    > documents now, because they preprocess a DB5 document to
    > remove the namespace. When the regular stylesheet
    > detects that the root element is in the namespace, it
    > processes the document with mode="stripNS" to copy all
    > the nodes to a variable, but without the DocBook namespace.
    > Then it converts the variable to a nodeset, and processes
    > the nodeset with the regular templates.
    >
    > The alternative approach is to create a set of templates
    > that match on the native namespace of DocBook 5 documents.
    > These stylesheets do that.
    >
    > These stylesheets completely mimic the behavior of the
    > existing stylesheets. These are not XSLT 2.0 stylesheets,
    > and they do not have any other significant changes than handling
    > the namespaced elements.
    >
    > The two main advantages of these stylesheets are:
    >
    > a. You can write customization layers using the DocBook namespace.
    >
    > b. The xml:base of the root element is not lost during processing
    > (so things like images and the olink database can be found
    > more easily).
    >
    >
    > How these stylesheets were produced
    > ----------------------------------------
    > These stylesheets were created from a DocBook XSL
    > snapshot. Each xsl file was processed with a
    > Perl script and its output placed in a parallel
    > directory tree. Any non-xsl files were simply copied
    > into place.
    >
    > Perl was used because of its excellent regular expression
    > handling, and because Perl is able to preserve all whitespace.
    > This retains the pretty-printed format that makes
    > the stylesheets easier to read and understand.
    >
    > The stylesheet transforms each XSL match, select, test,
    > count, from, use, and elements attribute to add a "d:"
    > prefix to each element referenced in the attribute.
    > For example:
    >
    > <xsl:template match="para">
    >
    > becomes:
    >
    > <xsl:template match="d:para">
    >
    > In addition, each stylesheet file has a namespace declaration
    > added in its root element:
    >
    > <xsl:stylesheet xslns:d="http://docbook.org/ns/docbook"></xsl:stylesheet>
    >
    > The combination of these two changes means that the templates
    > now recognize DocBook 5 elements in their native namespace.
    >
    >
    > How to use these stylesheets
    > --------------------------------
    > A DocBook 5 document has the DocBook namespace declaration
    > in the root element, along with the version attribute:
    >
    > <book xslns="http://docbook.org/ns/docbook" version="5.0">
    >
    > You can process a DocBook 5 document with these stylesheets
    > using any XSLT processor, including xsltproc, Saxon 6 or 8,
    > and Xalan. Use these stylesheets as you would a stylesheet
    > from the regular distribution (except for slides, website,
    > and roundtrip).
    >
    > If you happen to process a DocBook document whose root element
    > is without the namespace declaration, the stylesheet
    > does not fail. Rather, it detects that the document
    > does not have the namespace, and preprocesses it to add the
    > namespace declaration to all elements in the document.
    > In a manner similar to stripNS, it copies the elements
    > to a variable while adding the namespace, converts the
    > variable to a nodeset, and then processes the nodeset with
    > the namespace-aware templates.
    >
    > If the stylesheet encounters an element from your file
    > for which the stylesheet has no matching template,
    > it reports the unmatched element. In these stylesheets,
    > it also reports the namespace URI that the element has.
    >
    >
    > Customizing these stylesheets
    > --------------------------------
    > These stylesheets are customized with a customization
    > layer in the same manner as for the regular stylesheets,
    > with two differences.
    >
    > When you create a customization layer, you must do two things:
    >
    > a. Add the namespace declaration (with a prefix of your choice):
    >
    > <xsl:stylesheet xslns:d="http://docbook.org/ns/docbook"></xsl:stylesheet>
    >
    > b. Use the namespace prefix on all DocBook element names:
    >
    > <xsl:template match="d:formalpara">
    >
    > Be sure to include the namespace prefix on all element
    > references, including those in match, select, and test
    > attributes, even when using an axis specifier. Here are
    > some examples:
    >
    > <xsl:if test="d:title">
    >
    > <xsl:apply-templates select="d:title" mode="list.title.mode"></xsl:apply-templates>
    >
    > <xsl:apply-templates></xsl:apply-templates>
    > select="*[not(self::d:listitem or self::d:title
    > or self::d:titleabbrev)] |
    > comment()[not(preceding-sibling::d:listitem)] |
    >
    > processing-instruction()[not(preceding-sibling::d:listitem)]"/>
    >
    > Failure to add the prefix to an element name will cause
    > the stylesheet to silently not match the intended element,
    > with consequences that are most likely undesirable.
    >
    >
    > Bob Stayton
    > Sagehill Enterprises
    > DocBook Consulting
    > bobs@sagehill.net
    >
    >
    >
    >
    > ---------------------------------------------------------------------
    > To unsubscribe, e-mail: docbook-apps-unsubscribe@lists.oasis-open.org
    > For additional commands, e-mail: docbook-apps-help@lists.oasis-open.org
    -----BEGIN PGP SIGNATURE-----
    Version: GnuPG v1.4.5 (GNU/Linux)
    Comment: Using GnuPG with Mandriva - http://enigmail.mozdev.org

    iD8DBQFFtyNsjv9P65BfOUMRAjILAKC4suP4bT9Dyixo+I+xLQNguHDUJwCgkMKH
    YEQINelkoSUcIYUm7nu7vo8=
    =bmVO
    -----END PGP SIGNATURE-----

    </xsl:if></xsl:template></book></xsl:template></xsl:template>

    Attachment(s)

    vcf
    camille.vcf   472 B 1 version