Save EDD As DTD Not Working
Steve Rickaby
srickaby at wordmongers.demon.co.uk
Thu May 31 06:26:45 PDT 2007
At 19:08 -0500 30/5/07, Lin Surasky wrote:
>I started by creating an EDD in FrameMaker. It's not particularly fancy,
>but it meets the basic requirements for what I need right now. I tried
>to save it as a DTD so I could move on to the next step of testing
>imported XML. I was getting error messages, so I tested my methods by
>creating a new, empty EDD and adding a single simple element (called
>"element.") The DTD is saved with no errors, but when I open it in FM, I
>get the "Expected comment or CDATA" error and a syntax error.
>
>Is this a known issue, or am I missing a big step?
I'm guessing here, as I haven't seen your EDD, but here are a couple of things that can snarf up a save to DTD. I hit both of these when I was getting started:
. XMl/SGML is foxier about characters in element names than FrameMaker. An element called, for example, '*Thing' will error when you try to create a DTD. Stick to the base character set, alphanumerics, no spaces, for your element names.
. XML/SGML is looser in general rules than FrameMaker. It is therefore quite easy to create a general rule in FrameMaker that is invalid in XML, where you are limited pretty much to rules of the form:
(#PCDATA | elt1 | elt2 | ...)*
The workaround for this, if you need to stick with tight rules in FrameMaker (for example to enforce structure on your authors) is to include both 'tight' [FrameMaker] and 'loose' [XML] content rules in your EDD and conditionalize them: enable the XML versions and hide the FrameMaker versions before you create a DTD.
Here are two variants of a general rule from one of my EDDs to illustrate the differences:
For FrameMaker: (<TEXT> | IndexTerm | Literal | XRef )*, Graphic
For DTD creation: (<TEXT> | IndexTerm | Literal | XRef | Graphic )*
You have to write both rules, of course.
[Thanks to Lynn Price for the second issue and its fix.]
--
Steve
More information about the framers
mailing list