/usr/share/doc/openjade1.3/transform.htm is in openjade1.3 1.3.2-13ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | <!-- -*- sgml -*- -->
<html>
<head>
<meta http-equiv="Content-Type"
content="text/html; charset=iso-8859-1">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>The OpenJade SGML/XML backend</title>
</head>
<body background="images/background.gif" bgcolor="#FFFFFF">
<p><font face="Geneva, Arial"><img src="images/dsssltitle.gif"
alt="OpenJade" vspace="10" width="750" height="60"> </font></p>
<div align="center"><center>
<table border="0">
<tr>
<td><font face="Geneva, Arial"><img
src="images/space.gif" alt="" width="145" height="10"></font></td>
<td><h1><font face="Geneva, Arial">The OpenJade SGML/XML backend</font></h1>
<h3><font face="Arial">Created by James Clark</font></h3>
<p><font face="Geneva, Arial">OpenJade does not support the
DSSSL Transformation Language. However, it provides some
simple, non-standardized extensions to the DSSSL Style
Language that allow it to be used for SGML
transformations.</font> </p>
<p><font face="Geneva, Arial">These extensions are used
in conjunction with the SGML backend which is selected
with the <samp>-t sgml</samp> or <samp>-t xml</samp>
options. Unlike other backends, the SGML backend writes
its output to the standard output.</font> </p>
<p><font face="Geneva, Arial">The <samp>-t xml</samp>
option makes empty elements and processing instructions
use the XML syntax. Note that the XML declaration is not
automatically emitted.</font> </p>
<p><font face="Geneva, Arial">The extensions consist of a
collection of flow object classes that are used instead
of the standard DSSSL-defined flow object classes:</font>
</p>
<dl>
<dt><font face="Geneva, Arial"><code>element</code></font>
</dt>
<dt><font face="Geneva, Arial"><code>empty-element</code></font>
</dt>
<dd><font face="Geneva, Arial">Each of these flow
objects results in an element in the output. The <code>element</code>
flow object is a compound flow object (one that
can have child flow objects). Both a start-tag
and an end-tag are generated for this flow object.
The <code>empty-element</code> is an atomic flow
object (one that cannot have child flow objects).
Only a start-tag is output for this. It should
should be used for elements with a declared
content of EMPTY or with a content reference
attribute. Both of these flow objects support the
following non-inherited characteristics:</font> <dl>
<dt><font face="Geneva, Arial"><code>gi</code></font>
</dt>
<dd><font face="Geneva, Arial">This is a
string-valued characteristic that
specifies the element's generic
identifier. It defaults to the generic
identifier of the current node.</font> </dd>
<dt><font face="Geneva, Arial"><code>attributes</code></font>
</dt>
<dd><font face="Geneva, Arial">This specifies
the element's attributes as a list of
lists each of which consists of exactly
two strings, the first specifying the
attribute name and the second the
attribute value. It defaults to the empty
list.</font> </dd>
</dl>
</dd>
<dd> </dd>
<dt><font face="Geneva, Arial"><code>processing-instruction</code></font>
</dt>
<dd><font face="Geneva, Arial">This is an atomic flow
object that results in a processing instruction.
It supports the following non-inherited
characteristics:</font> <dl>
<dt><font face="Geneva, Arial"><code>data</code></font>
</dt>
<dd><font face="Geneva, Arial">This is a
string-valued characteristic that
specifies the content of the processing
instruction. It defaults to the empty
string.</font> </dd>
</dl>
</dd>
<dt><font face="Geneva, Arial"><code>document-type</code></font>
</dt>
<dd><font face="Geneva, Arial">This is an atomic flow
object that results in a DOCTYPE declaration. It
supports the following non-inherited
characteristics:</font> <dl>
<dt><font face="Geneva, Arial"><code>name</code></font>
</dt>
<dd><font face="Geneva, Arial">This is a
string-valued characteristic that
specifies the name of the document type (which
must be the same as the name of the
document element). It must not be omitted.</font>
</dd>
<dt><font face="Geneva, Arial"><code>system-id</code></font>
</dt>
<dd><font face="Geneva, Arial">This is a
string-valued characteristic that
specifies the system identifier of the
document type. If non-empty, this will be
used as the system identifier in the
doctype declaration. The default value is
the empty string.</font> </dd>
<dt><font face="Geneva, Arial"><code>public-id</code></font>
</dt>
<dd><font face="Geneva, Arial">This is a
string-valued characteristic that
specifies the public identifier of the
document type. If non-empty, this will be
used as the public identifier in the
doctype declaration. The default value is
the empty string.</font> </dd>
</dl>
</dd>
<dt><font face="Geneva, Arial"><code>entity</code></font>
</dt>
<dd><font face="Geneva, Arial">This is an compound
flow object that stores its content in a separate
entity. It supports the following non-inherited
characteristic:</font> <dl>
<dt><font face="Geneva, Arial"><code>system-id</code></font>
</dt>
<dd><font face="Geneva, Arial">The system
identifier of the entity. For now this is
treated as a filename not as an FSI.</font>
</dd>
</dl>
<p><font face="Geneva, Arial">Note that no entity
reference or declaration is emitted.</font> </p>
</dd>
<dt><font face="Geneva, Arial"><code>entity-ref</code></font>
</dt>
<dd><font face="Geneva, Arial">This is an atomic flow
object that results in an entity reference. It
supports the following non-inherited
characteristic:</font> <dl>
<dt><font face="Geneva, Arial"><code>name</code></font>
</dt>
<dd><font face="Geneva, Arial">The name of
the entity.</font> </dd>
</dl>
</dd>
<dt><font face="Geneva, Arial"><code>formatting-instruction</code></font>
</dt>
<dd><font face="Geneva, Arial">This is an atomic flow
object that inserts characters into the output
without change. It supports the following non-inherited
characteristic:</font> <dl>
<dt><font face="Geneva, Arial"><code>data</code></font>
</dt>
<dd><font face="Geneva, Arial">This is the
string to be inserted.</font> </dd>
</dl>
<p><font face="Geneva, Arial">It differs from
normal data characters in the <code>&</code>,
<code><</code> and <code>></code> will not
be escaped.</font> </p>
</dd>
</dl>
<p><font face="Geneva, Arial">There is also the following
characteristic:</font> </p>
<dl>
<dt><font face="Geneva, Arial"><code>preserve-sdata?</code></font>
</dt>
<dd><font face="Geneva, Arial">This is an inherited
boolean characteristic that applies to character
flow objects. When true, if the current-node for
the character flow object was an sdata node, then
the character will be output as a reference to an
entity with the same name. The initial value is #f.</font>
</dd>
</dl>
<p><font face="Geneva, Arial">Each of these flow object
classes must be declared using <code>declare-flow-object-class</code>
in any DSSSL specification that makes use of it. A
suitable set of declarations is:</font> </p>
<pre><font face="Geneva, Arial">
(declare-flow-object-class element
"UNREGISTERED::James Clark//Flow Object Class::element")
(declare-flow-object-class empty-element
"UNREGISTERED::James Clark//Flow Object Class::empty-element")
(declare-flow-object-class document-type
"UNREGISTERED::James Clark//Flow Object Class::document-type")
(declare-flow-object-class processing-instruction
"UNREGISTERED::James Clark//Flow Object Class::processing-instruction")
(declare-flow-object-class entity
"UNREGISTERED::James Clark//Flow Object Class::entity")
(declare-flow-object-class entity-ref
"UNREGISTERED::James Clark//Flow Object Class::entity-ref")
(declare-flow-object-class formatting-instruction
"UNREGISTERED::James Clark//Flow Object Class::formatting-instruction")
(declare-characteristic preserve-sdata?
"UNREGISTERED::James Clark//Characteristic::preserve-sdata?"
#f)
</font></pre>
<p><font face="Geneva, Arial">Here's a simple example
that does the identity transformation:</font> </p>
<pre><font face="Geneva, Arial">
<!doctype style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN">
(declare-flow-object-class element
"UNREGISTERED::James Clark//Flow Object Class::element")
(define (copy-attributes #!optional (nd (current-node)))
(let loop ((atts (named-node-list-names (attributes nd))))
(if (null? atts)
'()
(let* ((name (car atts))
(value (attribute-string name nd)))
(if value
(cons (list name value)
(loop (cdr atts)))
(loop (cdr atts)))))))
(default (make element
attributes: (copy-attributes)))
</font></pre>
<p><font face="Geneva, Arial">Note that this does not
deal with empty elements nor processing instructions, nor
does it include a doctype declaration.</font> </p>
</td>
</tr>
</table>
</center></div>
<p> </p>
</body>
</html>
|