Added the BSD licensed xmlformat utility for keeping the xml pretty

and consistant aswell as a configuration file. When I converted the manual
to docbook I was using an old version that I'd modified to insert 
tabs rather than spaces so using it on the existing documentation will 
appear to reformat the whole file. I don't think that matters at this 
stage and I'm tempted to reformat everything now while it isn't an issue.

Rewrote the Makefile that builds the docs so that:
- building the html only depends on having xsltproc installed.
- the xsl and xml files aren't copied to the build directory.
- make test does not remove an existing build of the docs.

Changed the glossary so that the acronym/abbreviations are the 
glossary terms, which I've discovered is how it is generally done.
It makes total sense now that I actually think about it because
you need to find the terms based on their use in the manual.

Added a bit of xsl to add the status attribute as a class attribute 
in the html so that the css can use a draft watermark(or any other 
watermark). DocBook supports the draft status without the xsl 
but it has problems, which I've described in the xsl file.

Minor tweak to the css to make the glossary terms and any other 
definition lists bold(that includes the index).


git-svn-id: svn://localhost/ardour2/trunk@1457 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
Tim Mayberry
2007-02-14 11:23:38 +00:00
parent c95d382604
commit 9d548f998b
16 changed files with 2481 additions and 256 deletions

View File

@@ -2,37 +2,36 @@
DOCNAME = ardour_manual
# Default values, only set if not set in book Makefile
XMLFILE ?= tmp/xml/$(DOCNAME).xml
XSLFILE ?= tmp/xsl/html.xsl
CSSFILE ?= tmp/$(DOCNAME).css
XMLTO ?= xmlto
XSLTPROC ?= xsltproc
PWD = $(shell pwd)
OUTDIR ?= tmp
XMLFILE ?= xml/$(DOCNAME).xml
XSLFILE ?= xsl/html.xsl
CSSFILE ?= $(DOCNAME).css
XSLTPROC ?= xsltproc
#PWD = $(shell pwd)
xml:: clean
-@mkdir tmp
# copy all the necessary files to the build directory
-@cp -rf xml tmp/xml
-@cp -rf xsl tmp/xsl
-@cp -rf images tmp/images
.PHONY : xml
html:: xml
# generate html
LANG=en_US.UTF-8 $(XMLTO) -x $(XSLFILE) -o tmp/ html $(XMLFILE)
# copy css file to html directory
-@cp -f css/$(DOCNAME).css $(CSSFILE)
# xsltproc -output option gives I/O errors because??, so
# just move the html to the output directory
html:: clean
# creating output directory
-@mkdir $(OUTDIR)
# generating html
LANG=en_US.UTF-8 $(XSLTPROC) -xinclude $(XSLFILE) $(XMLFILE)
# copy html files to output directory
-@mv *.html $(OUTDIR)
# copy css file to output directory
-@cp css/$(CSSFILE) $(OUTDIR)/$(CSSFILE)
# copy the image files to the output directory
-@cp -r images $(OUTDIR)/images
.PHONY : html
test:: xml
test::
xmllint --noout --postvalid --xinclude $(XMLFILE)
.PHONY : test
clean::
@rm -rf tmp
@rm -rf $(OUTDIR)
.PHONY : clean

View File

@@ -73,11 +73,10 @@ imap<leader>sn <section id=""><CR><title></title><CR><para><CR></para><CR></sect
"imap<leader>s3 <sect3 id=""><CR><title></title><CR><para><CR></para><CR></sect3><esc>kkkk$bla
imap<leader>ch <chapter id=""><CR><title></title><CR><para><CR></para><CR></chapter><esc>kkkk$bla
" images
" My mediaobject has two imagedata entries - 1 for EPS and 1 for JPG
" media related
imap<leader>fig <figure><CR><title></title><CR></figure><esc>k$bba
imap<leader>img <mediaobject><CR><imageobject><CR><imagedata fileref=""/><CR></imageobject><CR></mediaobject><esc>kk$bla
"imap<leader>img <imageobject><CR><imagedata fileref="" format=""><CR></imageobject>
imap<leader>mo <mediaobject><CR><leader>img<esc>k$hiEPS<esc>j$a<CR>,img<esc>k$hiJPG<esc>j$a<CR></mediaobject>
imap<leader>oi <objectinfo><CR></objectinfo><esc>k$a
" other objects
imap<leader>ti <title></title><esc>bba
@@ -85,8 +84,9 @@ imap<leader>fo <footnote><CR><para><CR></para><CR></footnote><esc>kk$a
imap<leader>sb <sidebar><CR><title></title><CR><para></para><CR></sidebar>
imap<leader>co <!-- --><esc>bhi
imap<leader>qt <blockquote><CR><attribution></attribution><CR><literallayout><CR></literallayout><CR></blockquote>
imap<leader>ge <glossentry id=""><CR><glossterm></glossterm><CR><glossdef><CR><para><CR></para><CR></glossdef><CR></glossentry><esc>kkkkkk$bba
imap<leader>ge <glossentry id=""><CR><glossterm></glossterm><CR><glossdef><CR><para><CR></para><CR></glossdef><CR></glossentry><esc>6k$bla
imap<leader>gt <glossterm linkend=""></glossterm><esc>bb3la
imap<leader>gs <glossseealso></glossseealso><esc>bba
imap<leader>l <literal></literal><esc>bba
" admonitions

View File

@@ -28,6 +28,18 @@ div.longdesc-link {
float:right;
}
/* Lists */
dt {
font-weight:bold;
}
dd {
margin:0em;
margin-left:2em;
padding-top:0em;
}
/* Images */
img {
@@ -150,3 +162,10 @@ h5.formalpara {
font-size:1em;
margin-top:2em;
}
/* Status */
.ardour-draft {
background: white url(./images/watermark-draft.png) top left repeat;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

View File

@@ -51,4 +51,7 @@
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="glossary.xml" />
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="contributing_to_the_manual.xml" />
</book>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN" "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
]>
<appendix id="ap-contributing-to-the-manual" label="A" status="ardour-draft">
<title>Contributing to the Manual</title>
<para>
A paragraph
</para>
<!--
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
href="Some_Subsection.xml" />
-->
</appendix>

View File

@@ -5,251 +5,299 @@
]>
<glossary>
<title>Ardour Glossary</title>
<title>Ardour Glossary</title>
<glossdiv>
<title>A</title>
<glossentry id="gt-alsa">
<glossterm><acronym>ALSA</acronym></glossterm>
<glossdef>
<para>
Abbreviation for Advanced Linux Sound Architecture. ALSA provides audio
and MIDI functionality to the Linux operating system.
</para>
<para>
<ulink url="http://www.alsa-project.org"/>
</para>
</glossdef>
</glossentry>
<glossdiv>
<title>A</title>
<glossentry id="gt-alsa">
<glossterm><ulink url="http://www.alsa-project.org">Advanced Linux Sound Architecture</ulink></glossterm>
<acronym>ALSA</acronym>
<glossdef>
<para>
The Advanced Linux Sound Architecture (ALSA) provides audio and MIDI functionality to the Linux operating system.
</para>
</glossdef>
</glossentry>
<glossentry id="gt-audio-track">
<glossterm>Audio Track</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
<glossentry id="gt-auditioner">
<glossterm>Auditioner</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossentry id="gt-auditioner">
<glossterm>Auditioner</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>B</title>
<glossentry id="gt-bus">
<glossterm>Bus</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>B</title>
<glossentry id="gt-bus">
<glossterm>Bus</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
<glossdiv>
<title>C</title>
<glossentry id="gt-crossfade">
<glossterm>Crossfade</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossentry id="gt-bus-track">
<glossterm>Bus Track</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>D</title>
<glossentry id="gt-daw">
<glossterm>Digital Audio Workstation</glossterm>
<acronym>DAW</acronym>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>C</title>
<glossentry id="gt-crossfade">
<glossterm>Crossfade</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>E</title>
<glossentry id="gt-embed">
<glossterm>Embed</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>D</title>
<glossentry id="gt-daw">
<glossterm><acronym>DAW</acronym></glossterm>
<glossdef>
<para>
Abbreviation of Digital Audio Workstation. Some reasonable definition
here.
</para>
</glossdef>
</glossentry>
<glossdiv>
<title>H</title>
<glossentry id="gt-hdr">
<glossterm>Hard Disk Recorder</glossterm>
<acronym>HDR</acronym>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossentry id="gt-destructive-recording">
<glossterm>Destructive Recording</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>I</title>
<glossentry id="gt-insert">
<glossterm>Insert</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>E</title>
<glossentry id="gt-embed">
<glossterm>Embed</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>J</title>
<glossentry id="gt-jack">
<glossterm><ulink url="http://jackaudio.org">Jack Audio Connection Kit</ulink></glossterm>
<acronym>JACK</acronym>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>H</title>
<glossentry id="gt-hdr">
<glossterm><acronym>HDR</acronym></glossterm>
<glossdef>
<para>
Short for Hard Disk Recorder. Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>L</title>
<glossentry id="gt-ladpsa">
<glossterm>Linux Audio Developers Simple Plugin API</glossterm>
<acronym>LADSPA</acronym>
<glossdef>
<para>
<ulink url="http://ladspa.org">Website</ulink>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>I</title>
<glossentry id="gt-insert">
<glossterm>Insert</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>M</title>
<glossentry id="gt-midi">
<glossterm>Musical Instrument Digital Interface</glossterm>
<acronym>MIDI</acronym>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>J</title>
<glossentry id="gt-jack">
<glossterm><acronym>JACK</acronym></glossterm>
<glossdef>
<para>
Initialism of Jack Audio Connection Kit. Some reasonable definition here.
</para>
<para>
<ulink url="http://jackaudio.org"/>
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>P</title>
<glossentry id="gt-playlist">
<glossterm>Playlist</glossterm>
<glossdef>
<para>
some reasonable definition here.
</para>
</glossdef>
</glossentry>
<glossdiv>
<title>L</title>
<glossentry id="gt-ladpsa">
<glossterm><acronym>LADSPA</acronym> </glossterm>
<glossdef>
<para>
Abbreviation of Linux Audio Developers Simple Plugin API. Some reasonable
definition here.
</para>
<para>
<ulink url="http://ladspa.org"/>
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossentry id="gt-plugin">
<glossterm>plugin</glossterm>
<glossdef>
<para>
some reasonable definition here.
</para>
<!--
<glossseealso otherterm="gt-session"/>
-->
</glossdef>
</glossentry>
<glossdiv>
<title>M</title>
<glossentry id="gt-midi">
<glossterm><acronym>MIDI</acronym> </glossterm>
<glossdef>
<para>
Abbreviation for Musical Instrument Digital Interface. Some reasonable
definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossentry id="gt-posix">
<glossterm>Portable Operating System Interface for uniX</glossterm>
<acronym>POSIX</acronym>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>P</title>
<glossentry id="gt-playlist">
<glossterm>Playlist</glossterm>
<glossdef>
<para>
some reasonable definition here.
</para>
</glossdef>
</glossentry>
<glossdiv>
<title>R</title>
<glossentry id="gt-plugin">
<glossterm>plugin</glossterm>
<glossdef>
<para>
some reasonable definition here.
</para>
</glossdef>
</glossentry>
<glossentry id="gt-region">
<glossterm>Region</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
<glossentry id="gt-posix">
<glossterm><acronym>POSIX</acronym></glossterm>
<glossdef>
<para>
POSIX stands for Portable Operating System Interface for uniX. Some
reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossentry id="gt-redirect">
<glossterm>Redirect</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>R</title>
<glossentry id="gt-region">
<glossterm>Region</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
<glossdiv>
<title>S</title>
<glossentry id="gt-send">
<glossterm>Send</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
<glossentry id="gt-session">
<glossterm>Session</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
<glossentry id="gt-session-template">
<glossterm>Session Template</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
<glossseealso otherterm="gt-session"/>
</glossdef>
</glossentry>
</glossdiv>
<glossentry id="gt-redirect">
<glossterm>Redirect</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>T</title>
<glossentry id="gt-track">
<glossterm>Track</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>S</title>
<glossentry id="gt-send">
<glossterm>Send</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
<glossdiv>
<title>V</title>
<glossentry id="gt-vst">
<glossterm>Virtual Studio Technology</glossterm>
<acronym>VST</acronym>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossentry id="gt-session">
<glossterm>Session</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
<glossentry id="gt-session-template">
<glossterm>Session Template</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
<glossseealso otherterm="gt-session"/>
</glossdef>
</glossentry>
<glossentry id="gt-submixing">
<glossterm>Submixing</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>T</title>
<glossentry id="gt-tape-track">
<glossterm>Tape Track</glossterm>
<glossdef>
<para>
Some Reasonable definition here.
</para>
<glossseealso otherterm="gt-track"/>
</glossdef>
</glossentry>
<glossentry id="gt-track">
<glossterm>Track</glossterm>
<glossdef>
<para>
Some reasonable definition here.
</para>
</glossdef>
</glossentry>
</glossdiv>
<glossdiv>
<title>V</title>
<glossentry id="gt-vst">
<glossterm><acronym>VST</acronym></glossterm>
<glossdef>
<para>
Short for Virtual Studio Technology
</para>
</glossdef>
</glossentry>
</glossdiv>
</glossary>

View File

@@ -6,8 +6,8 @@
<!-- XXX lots to do on this page -->
<section id="mixer-window-mixer-strips">
<title> Mixer Strips </title>
<section id="mixer-strips">
<title>Mixer Strips</title>
<para>
Each track and bus is represented in the mixer window by a <emphasis>mixer
strip</emphasis> that contains various controls related to signal flow.

View File

@@ -0,0 +1,55 @@
xmlformat bugs
Ruby version is slower than the Perl version, a difference that shows up
particularly for larger documents. I haven't done any profiling to determine
which parts of the program account for the differences.
----------
Within normalized elements, the line-wrapping algorithm preserves inline
tags, but it doesn't take any internal line-breaks within those tags into
account in its line-length calculations. Consider this element:
<para>
This is text with an inline <inline-element attr="This is
an attribute
value">element</inline-element> in the middle.
</para>
The opening <inline-element> tag is considered to have a length
equal to its total number of characters. The line-wrapping algorithm
could be made more complex to take the line-breaks into account.
I haven't bothered, and may never bother. If such a change is made, no
indenting should be applied that would change the attribute value.
----------
Line-wrapping length calculations don't take into account the possibility
that text from a different element may occur on the same line if break
values are set to zero. For example, with a wrap-length of 15, you could
end up with output like this:
<listitem><para>This is a line
of text.</para></listitem><listitem><para>This is a line
of text.</para></listitem>
The middle line has more than 15 characters of text.
This also shows that wrap-length doesn't take into account the length of
tags of enclosing blocks on the same line, which can also be considered a
bug.
Fix: Set all your break values > 0.
----------
Normalization converts runs of spaces to single spaces. This means that
if you write two spaces after periods in text, normalization will
convert them to single spaces. Even if normalization didn't do that,
the two spaces would be lost if line-wrapping is enabled and they occur
at a line break.
I don't know if this is really a bug, but it's something to be aware of.
----------
Doesn't recognize multi-byte files. In some cases, you can work around this.
For example, an editor might save a file as Unicode even when the document
contains only ASCII characters. Re-save the file as an ASCII file (or
some single-byte encoding such as ISO-8859-1) and it should work.

View File

@@ -0,0 +1,28 @@
Version 1.04 (released 2006-08-14)
- Assign each token an input line number and display the line number in
error messages. This provides better information to the user about
the location of problems in input files.
- Print the token stack when an error occurs. This provides some idea of
the context of the element that is malformed or has malformed content.
Version 1.03 (released 2004-03-26)
- In xmlformat.rb, made some changes needed for Ruby 1.8:
- Convert @@xml_spe parsing expression to Regexp with Regexp.new().
scan() method doesn't work with string argument now, apparently.
- In parsing patterns, change literal ] to \\] to suppress warnings
- In xmlformat.pl:
- In parsing patterns, change literal ] to \\]. This isn't actually
necessary, but better preserves parallelism with Ruby version.
Version 1.02 (released 2004-02-06)
- Added --in-place/-i option for in-place reformatting. (Requires named
input file or files.)
- Added --backup/-b option for making backup of each input file (used with
--in-place).
- If multiple input files are named on the command line, they are processed
as separate documents, not as one combined input. (This was necessary
to make --in-place and --backup work correctly.)
- Added a tutorial document.
Version 1.01 (released 2004-01-18)
- Initial public release.

View File

@@ -0,0 +1,29 @@
There are two versions of xmlformat:
- xmlformat.rb, written in Ruby
- xmlformat.pl, written in Perl
Both should produce identical results.
To install xmlformat, copy the version you want to use to some public
directory that is listed in your PATH variable. You may wish to rename
the script to xmlformat so that you don't have to type the .rb or .pl
extension each time you invoke it.
Example:
cp xmlformat.rb /usr/local/bin/xmlformat
(or)
cp xmlformat.pl /usr/local/bin/xmlformat
If you want to install both versions, do not rename them:
cp xmlformat.rb /usr/local/bin/xmlformat.rb
cp xmlformat.pl /usr/local/bin/xmlformat.pl
In this case you will need to specify the extension when invoking the program
to indicate which version you want.
If your Ruby or Perl programs are not at the location listed in the
first line of the installed script, you'll need to edit that line
to have the correct location.

View File

@@ -0,0 +1,93 @@
xmlformat is distributed under a BSD-style license. This license
applies to the entire xmlformat distribution, with the exception of
the REX parser (described below).
Copyright (c) 2004, 2005, Kitebird, LLC. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. Neither the name of Kitebird nor the names of its contributors may
be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
----------------------------------------------------------------------
The REX parser
xmlformat contains code based on the REX parser, which is Copyright (c) 1998,
Robert D. Cameron. REX is described in this document:
http://www.cs.sfu.ca/~cameron/REX.html
The document contains a Perl implementation of REX:
--- begin REX code ---
# REX/Perl 1.0
# Robert D. Cameron "REX: XML Shallow Parsing with Regular Expressions",
# Technical Report TR 1998-17, School of Computing Science, Simon Fraser
# University, November, 1998.
# Copyright (c) 1998, Robert D. Cameron.
# The following code may be freely used and distributed provided that
# this copyright and citation notice remains intact and that modifications
# or additions are clearly identified.
$TextSE = "[^<]+";
$UntilHyphen = "[^-]*-";
$Until2Hyphens = "$UntilHyphen(?:[^-]$UntilHyphen)*-";
$CommentCE = "$Until2Hyphens>?";
$UntilRSBs = "[^\\]]*](?:[^\\]]+])*]+";
$CDATA_CE = "$UntilRSBs(?:[^\\]>]$UntilRSBs)*>";
$S = "[ \\n\\t\\r]+";
$NameStrt = "[A-Za-z_:]|[^\\x00-\\x7F]";
$NameChar = "[A-Za-z0-9_:.-]|[^\\x00-\\x7F]";
$Name = "(?:$NameStrt)(?:$NameChar)*";
$QuoteSE = "\"[^\"]*\"|'[^']*'";
$DT_IdentSE = "$S$Name(?:$S(?:$Name|$QuoteSE))*";
$MarkupDeclCE = "(?:[^\\]\"'><]+|$QuoteSE)*>";
$S1 = "[\\n\\r\\t ]";
$UntilQMs = "[^?]*\\?+";
$PI_Tail = "\\?>|$S1$UntilQMs(?:[^>?]$UntilQMs)*>";
$DT_ItemSE =
"<(?:!(?:--$Until2Hyphens>|[^-]$MarkupDeclCE)|\\?$Name(?:$PI_Tail))|%$Name;|$S";
$DocTypeCE = "$DT_IdentSE(?:$S)?(?:\\[(?:$DT_ItemSE)*](?:$S)?)?>?";
$DeclCE =
"--(?:$CommentCE)?|\\[CDATA\\[(?:$CDATA_CE)?|DOCTYPE(?:$DocTypeCE)?";
$PI_CE = "$Name(?:$PI_Tail)?";
$EndTagCE = "$Name(?:$S)?>?";
$AttValSE = "\"[^<\"]*\"|'[^<']*'";
$ElemTagCE = "$Name(?:$S$Name(?:$S)?=(?:$S)?(?:$AttValSE))*(?:$S)?/?>?";
$MarkupSPE =
"<(?:!(?:$DeclCE)?|\\?(?:$PI_CE)?|/(?:$EndTagCE)?|(?:$ElemTagCE)?)";
$XML_SPE = "$TextSE|$MarkupSPE";
sub ShallowParse {
my($XML_document) = @_;
return $XML_document =~ /$XML_SPE/g;
}
--- end REX code ---
The Perl and Ruby implementations of xmlformat contain parsers that
are based on the preceding code and are essentially the same, with the
exception of changes to variable and function names.

View File

@@ -0,0 +1,35 @@
xmlformat - an XML document formatter
Paul DuBois
paul@kitebird.com
This is the distribution for xmlformat 1.04.
If you find bugs, please let me know.
The current version of xmlformat is always available at:
http://www.kitebird.com/software/
xmlformat is free software, distributed under a BSD-style license.
For specific licensing information, see the LICENSE file.
For installation instructions, see the INSTALL file. xmlformat has two
implementations, one in Ruby and one in Perl. They should produce
identical output in all cases.
Documentation is in the docs subdirectory.
Tests are in the tests directory, though you run them in the main
xmlformat directory:
- To run all tests:
make test
- To run all tests for the Ruby version:
./runtest all
- To run all tests for the Perl version:
./runtest -p all
- To run an individual test for the Ruby version:
./runtest testname
- To run an individual test for the Perl version:
./runtest -p testname
A test name is the name of its .xml file, minus the .xml suffix.
For more information, see tests/Notes.

View File

@@ -0,0 +1,130 @@
# Comments are treated as CDATA and not touched. It's best to set
# them out from other text if possible. A doublespace is nice but
# code is still code, so it's not really that important. (Down, inner
# stickler...)
#
*DEFAULT
format = block
entry-break = 1
element-break = 1
exit-break = 1
subindent = 1
normalize = no
wrap-length = 78
*DOCUMENT
format = block
wrap-length = 256
element-break = 2
article book
element-break = 2
articleinfo bookinfo
normalize = yes
year holder
entry-break = 0
exit-break = 0
normalize = yes
firstname surname othername
entry-break = 0
exit-break = 0
normalize = yes
revnumber date authorinitials
entry-break = 0
exit-break = 0
normalize = yes
revremark
normalize = yes
section chapter glossary
entry-break = 1
exit-break = 1
normalize = yes
# "Normalize" means make smart whitespace decisions
para simpara example important note warning caution itemizedlist variablelist varlistentry entry quote figure glossdiv glossentry
entry-break = 1
exit-break = 1
normalize = yes
title titleabbrev
format = inline
normalize = yes
table
entry-break = 1
exit-break = 1
normalize = yes
emphasis literal abbrev
format = inline
trademark
format = inline
# Do not fubar <screen> or <programlisting>
screen programlisting
format = verbatim
# <entry> is special because a linebreak has meaning, best leave the
# decisions up to the experts
#entry
# format = verbatim
command application filename option userinput computeroutput replaceable glossterm
format = inline
# The <primary> and <secondary> subelements of <indexterm> are still block
firstterm
format = inline
normalize = yes
indexterm
format = block
normalize = no
primary secondary
# format = inline
entry-break = 0
exit-break = 0
normalize = yes
varlistentry
element-break = 1
term
entry-break = 0
exit-break = 0
menuchoice guilabel guimenu guisubmenu guimenuitem guibutton keycap keycombo mousebutton
format = inline
wordasword systemitem citetitle footnote email
format = inline
acronym
format = inline
# Make <ulink> and <xref> less goofy in their use of whitespace
ulink xref link
format = inline
# Cover OMF files
creator description format identifier language maintainer omf relation subject type
format = block
normalize = yes
entry-break = 1
exit-break = 1
# Cover rpm-info files
details rights version
format = block
entry-break = 0
exit-break = 0
normalize = yes

1745
manual/xmlformat-1.04/xmlformat.pl Executable file

File diff suppressed because it is too large Load Diff

View File

@@ -15,6 +15,28 @@
<xsl:param name="html.ext" select="'.html'"/>
<xsl:output method="html" indent="yes"/>
<!--
I'm not using draft mode because with at least the version
of the stylesheets I have it inserts inline css. I'm not aware
of a non-hacky way around that so until I find a better
solution I'm using custom status fields:
ardour-draft
ardour-beta?
ardour-rc (release candidate)?
-->
<!-- Add css class for status -->
<xsl:template name="body.attributes">
<xsl:if test="(ancestor-or-self::*[@status][1]/@status != '')">
<xsl:attribute name="class">
<xsl:value-of select="ancestor-or-self::*[@status][1]/@status"/>
</xsl:attribute>
</xsl:if>
</xsl:template>
<!-- titles after all elements -->
<xsl:param name="formal.title.placement">
figure after