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).
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 "isoall.rw"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.