[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-apps] Shared text entities
Hi Camille,
On Saturday 08 October 2005 13:40, Camille Bégnis wrote:
> [...]
> So I thought of using the xinclude plus xpointer mechanism in order to
> pick the "entities" in a real XML file instead. The problem is that the
> xinclude syntax is quite verbose, so replacing &docbook; with
> <xi:include href="entities.xml xpointer="docbook"
> xmlns:xi="http://www.w3.org/2001/XInclude" /> makes the XML code
> significantly harder to read.
>
> So I am interested in any experience in this area.
> If you have another idea than xinclude, I'll be happy to hear it as
> well.
If you look for another solution you should consider some parameters:
* How much control by DTD/schema?
* Flexibility
* Verbosity
* Extensibility
There are a number of different methods to use, each have advantages and
disadvantages, of course:
1. Processing instructions (PIs)
You can use something like
<para>Use <?dbentity entity="foo"?> to ...</para>
Advantages:
- A bit less verbose than XIncludes
- Writer have freedom to choose from different "sets"
- Very extensible and flexible
- It doesn't require to change the DTD/Schema
Disadvantages
- Freedom is sometimes not always useful. Think of writers who
should use restricted values only (XML editors).
- There is no validation for PIs, e.g. you can not restrict
values. You can check the correct values only in the XSLT
step, for example
- "Entity replacement" must be resolved by another step
- PIs shouldn't be use for content only
2. (Ab)use of an exisiting element
You could use an element with a "special" attribut. In case of DocBook you
could use the element phrase. For example:
<para>Use <phrase role="entity:foo"/> to ... </para>
Advantages:
- Less verbose than XInclude
- DTD can restrict the possible values
- phrase can occur on allowed content only
- XML editors can offer writers the set of possible values
Disadvantages:
- You have to change the DTD/Schema to add all possible
attribute values
- The semantic of phrase doesn't really fit
- It might conflict with other content for phrase (processing
might be a bit complicated)
- It must be resolved by another step
3. Introduce new element
It is a variation of point 2: Insert a new element just for this purpose.
For example:
<para>Use <e:entity name="foo"/> to ... </para>
Advantages:
- Less verbose than XInclude
- DTD/Schema can restrict possible values
- XML editors can offer writers the set of possible values
Disadvantages:
- You have to change the DTD/Schema
- Complicates the content modell in case of DTD
- It must be resolved by another step
What is the best solution? I don't know. It is up to you. :-)
Tom
--
Thomas Schraitle
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]