This is the mail archive of the
mailing list for the DocBook project.
Re: Re: RELAX NG and DocBook
Norman Walsh <firstname.lastname@example.org> writes:
> / Michael Smith <email@example.com> was heard to say:
> | Elliotte Rusty Harold <firstname.lastname@example.org> writes:
> | > I'm not that familiar with Relax. Can it handle the entity
> | > declarations DocBook needs?
> | But I think most or all of the parameter entity reference in the
> | DocBook DTD can be handled in a RELAX NG schema using the RELAX NG
> | <externalref> element and "named patterns" (using the <define> and
> | <ref> elements) as discussed in the RELAX NG tutorial:
> Yeah, I don't think it's PEs that are at issue. Those are mostly
> invisible to the end user. General entities are the problem.
Ah, I did actually think the question was probably about the PEs,
since there's so many of them in the DTD, and the issue of not being
able to declare general entities would be a problem with any schema,
not just DocBook.
I was thinking the ISO character entities at least could be turned
into elements, but then realized that -- because they'd have to valid
anywhere in a document instance -- if they were made elements, and you
were using a validating editor, wanted to insert a new element into
you document, and pulled down a menu or did a completion to see which
elements were valid, you'd be presented not just with a list of the
"real" elements valid at that point, but also with a bazillion ISO
"entity" elements, every time.
I know the workaround is to reference the entities in an internal DTD
subset in your document instances, like this:
<!DOCTYPE book [
<!ENTITY % dbcent
PUBLIC "-//OASIS//ENTITIES DocBook XML Character Entities V4.1.2//EN"
...and you could do the same thing for any custom general entities you
want to declare. But that seems like an less-than-elegant solution.