[
Lists Home |
Date Index |
Thread Index
]
At 2002-07-31 11:16 -0700, Rick Jones wrote:
>"G. Ken Holman" wrote:
> > Personally, I'm a big fan of external parsed general entities for the
> > management of a single large XML document in many small pieces. My
> > training material is authored in XML and to change one paragraph I need
> > only pull a lesson entity into a text editor instead of the entire course.
>
>So, when I want the great big config file, don't try to stitch it
>together with statements inside the config file, but "cat" (as it were)
>several smaller files together - with an XSLT? (probably have the wrong
>term)
Nope ... external parsed general entities are pulled together automatically
by the XML processor to create a single instance.
An external parsed general entity is declared as in:
<!ENTITY abc SYSTEM "def/abc.ent">
An external parsed general entity is included by reference in an XML
fragment as in:
...
&abc;
...
The XML processor inside of an XSLT processor worries about finding the
external parsed general entities, so nothing explicit has to be done by the
user of the XML document.
> > I do *not* use such constructs for sharing information as fragments between
> > multiple XML instances; I use XSLT to extract fragments of an XML document,
> > thus keeping every external parsed general entity in a single parsing
> > context (set of DTD declarations for entities).
When I want to extract a fragment from another file, XSLT brings that file
into its internal XPath node tree representation (the XML processor finding
however many external parsed general entities the author of that file may
have chosen to use ... it doesn't impact the activity because it is
automatic) when I use the document() function to make my way to the piece
that I need.
Had I improperly (though I admit intuitively) just referred to a given
external parsed general entity from multiple XML files (each having their
own DTD declarations of entities), then I run a real risk of shooting
myself in the foot and don't know it until long after the system is
deployed. Consider someone modifying their DTD with a new entity and then
adding a reference to that entity in the shared fragment. It works fine
for them. *Every* other XML document referring to the fragment is now not
even well-formed and won't even make it to first base in an XSLT process or
any XML-based application.
In my practice of keeping each of my external parsed general entities to a
single XML document with its DTD declarations of all entities needed for
that document, I have the freedom to change the parsing context (set of
entity declarations) at any time without jeopardizing my environment.
Something I have done a number of places in my environment is edit one
large XML file in three separate files, the wrapper file being very short:
<!DOCTYPE document-element
[
<!ENTITY entity-with-a-bunch-of-IDed-elements SYSTEM "...uri...">
<!ENTITY entity-with-a-bunch-of-IDREF-attributes SYSTEM "...uri...">
]>
<document-element>
&entity-with-a-bunch-of-IDed-elements;
&entity-with-a-bunch-of-IDREF-attributes;
</document-element>
Each file has its own revision history in my source code control system so
I can follow the history of changes in one part of the document separate
from the history of changes in another part of the document. This has been
very useful.
I confess a drawback of this approach is that very few XML editing tools
(perhaps none?) preserve the physical entity structure of using external
parsed general entities ... so I just use emacs or a non-XML-aware editor
for my work.
I find when teaching XSLT that very very few students have ever heard of,
let alone use, external parsed general entities in the management of large
instances: less than a handful in all of the students of the 57 deliveries
of my XSLT course I've given around the world since February 1999. I've
asked in every course.
.................... Ken
--
Upcoming hands-on in-depth 3-days XSLT/XPath and/or 2-days XSL-FO:
- North America: Sep 30-Oct 4,2002
- Japan: Oct 7-Oct 11,2002
G. Ken Holman mailto:gkholman@CraneSoftwrights.com
Crane Softwrights Ltd. http://www.CraneSoftwrights.com/x/
Box 266, Kars, Ontario CANADA K0A-2E0 +1(613)489-0999 (Fax:-0995)
ISBN 0-13-065196-6 Definitive XSLT and XPath
ISBN 1-894049-08-X Practical Transformation Using XSLT and XPath
ISBN 1-894049-07-1 Practical Formatting Using XSLFO
XSL/XML/DSSSL/SGML/OmniMark services, books (electronic, printed),
articles, training (instructor-live,Internet-live,web/CD,licensed)
Next public training: 2002-08-05,26,27,09-30,10-03,07,10
|