[Date Prev][Date Next] [Thread Prev][Thread Next]
[Date Index] [Thread Index] [New search]

Re: Getting rid of Doctype declaration header?



>The question is: is there any way to work with nested text insets in
>FM+SGML? Is there any FDK API function/routine to read a SGML
>fragment or text inset (if necessary with corresponding Doctype
>declaration), interpret the SGML structure and include the subsequent
>text inset(s) and finally drop the the header just before the whole part
>is being copied as referenced in the main document?

This is where, as Dan observed, declaring the entities in the DTD becomes
necessary. Of course, you can put the entities needed for a particular
document in a file of entity declarations, refer to this file in the DTD
and set up the entity search paths so that FrameMaker+SGML uses the right
declaration file for each document.

Suppose you create a file called para.fm with the structure

   (SGMLFragment)
      |---(Para).....This is a Paragraph

and save it to SGML as para.ent. Para.ent contains

   <para>This is a Paragraph</para>

Now you create a file called sect1.fm with the structure

   (SGMLFragment)
     |--(Sect1)
     |     |--(Title)....Sect1 Title
     |     |--(Para).....This is a Paragraph

where the Para element is not entered directly, but rather as a text inset.

When you save this FrameMaker+SGML document to SGML, the results depend
on your DTD. If there is no entity declaration for para.ent, FrameMaker+SGML
exports:

   <sect1><title>Sect1 Title</title>
   &ti1;</sect1>

If there is a declaration such as

   <!ENTITY para SYSTEM "para.ent">

FrameMaker+SGML exports:

   <sect1><title>Sect1 Title</title>
   &para;</sect1>

Note that there is no need to put a complete path name in the system identifier.

In any case, suppose you export this fragment to SGML and save the result as
sect1.ent. Now create a new FM+SGML document with the structure:

       (Chapter)
           |--(Title).....ChapterTitle


Set an insertion point after the Title and try to import sect1.ent. If sect1.ent
has the first form above, and ti1 is not declared, the export fails. If sect1.ent
has the second form, and para is declared, the export succeeds.

In conclusion, you can nest the fragments arbitrarily deep (subject to the entity
nesting quantity in your SGML declaration) provided that all the entities are
declared.

	--Lynne

Lynne A. Price
Text Structure Consulting, Inc.
lprice@txstruct.com
http://www.txstruct.com

** To unsubscribe, send a message to majordomo@omsys.com **
** with "unsubscribe framers" (no quotes) in the body.   **