top | previous | next

Step 8: +++ draft +++ Edit the read/write rules file.

Some elements are really special. They are not considered as containers (i.e. standard DTD elements) and can not be imported as is. You must handle Cross-references, graphics and such in some special way.

The dumb way to handle this is to manually redefine elements like cross refs and graphics. You can copy the element definitions to a special file once you got it right and copy it back each time you re-import the DTD (I did that the first day).

(1) Define the rules

I strongly suggest that you define a read/write rules file. This file must be declared in the SGML application. Edit this rule file with a standard programming editor (e.g. the NotePad on Windoze) and make sure to save as Ascii! Here is the contents of my file which I called Stepbystep.rules

fmsgml version is "6.0";#include ""element "Xref"  {    is fm cross-reference element "Xref";    attribute "href" is fm property cross-reference id;    attribute "link" is fm attribute "Link";    attribute "show" is fm attribute "Show";    attribute "actuate" is fm attribute "Actuate";  }element "Graphics"  {    is fm graphic element "Graphics";    attribute "link" is fm attribute "Link";    attribute "href" is fm property file;    attribute "show" is fm attribute "Show";    attribute "actuate" is fm attribute "Actuate";    attribute "Entityref"      {        is fm property entity;        is fm attribute;      }  }

You can read the documentation spread over chapters 15,16 and 20 (at least!). Basically what you must do, is to map what Framemaker exports such as cross-references and graphics to an XML DTD. I tried to come up with a pretty uncreative 1 to 1 mapping, because I do not understand certain things. I also have other problems, i.e. F+S wil write out xml:link in Xrefs, but can't import this namespaced attribute from a DTD.

(2) Import the DTD once more

At least once more, this is just a reminder that you can update your EDD by reading in the the DTD again. Of course, if you have major changes things can get tricky, but IMHO F+S handles DTD importing just fine:

File->Developer tools->Import DTD