Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Jan 2000 15:42:15 +0100 (CET)
From:      Karlheinz.Eckmeier@t-online.de
To:        FreeBSD-gnats-submit@freebsd.org
Subject:   docs/16439: fdp-primer - difficulties with split SGML files 
Message-ID:  <200001291442.PAA00654@abakus.my.domain>

next in thread | raw e-mail | index | archive | help

>Number:         16439
>Category:       docs
>Synopsis:       fdp-primer - difficulties with split SGML files
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-doc
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jan 29 06:50:02 PST 2000
>Closed-Date:
>Last-Modified:
>Originator:     Karlheinz Eckmeier
>Release:        FreeBSD 3.3-RELEASE i386
>Organization:
>Environment:

	doc-all from cvsup.de.FreeBSD.org ( release=cvs tag=. )
	xemacs-20.4 + psgml 1.2.0


>Description:

	The last part in of "6.3.1.1.3 directory/chapter/sgml" says:

        <quote>
        Each chapter.sgml file will not be a complete SGML document. In 
        particular, they will not have their own DOCTYPE line at the start 
        of the file. 

        This is unfortunate for two reasons; 

        * It makes it impossible to treat these as generic SGML files and 
          simply convert them to HTML, RTF, PS, and other formats in the 
          same way the main Handbook is generated. This would force you to 
          rebuild the Handbook every time you want to see the effect a change 
          as had on just one chapter. 

        * Emacs' sgml-mode can not use it to determine the DTD to use, losing 
          useful benefits of sgml-mode (element completion, automatic 
          validation, and so on).
        </quote>

>How-To-Repeat:

	

>Fix:
	
	I propose to change or to drop these two paragraphs because of
	the following reasons:

	1) Regarding the first paragraph I would like to suggest a different
	   approach. It is true, one cannot treat these "partial" SGML-files
	   the same as a complete SGML document. But using a little workaround
	   would allow to generate the output formats of only the part
	   actually being worked on:
	   - Create a template SGML file containing all the elements the
	     partial SGML files is missing (DOCTYPE, <book>,<part>). It also
	     contains an template external general entity to include a 
	     partial SGML file at the appropriate place.
	   - Create a script with the following functions:
		+ When called with a partial SGML file as parameter it
		  passes the template file through sed to change the template
		  entity to include the specified partial SGML file and thus
		  creating a valid SGML document.
		+ Start the appropriate make process to generate the desired
		  output format.
		+ Print the contents of the jade log file to stdout
	   - Configure the compile command of xemacs to start the above
	     script when editing a SGML file. All the errors discovered by
	     jade (i.e. the contents of the jade log file) will show up in 
	     the compilation buffer of xemacs and can be stepped through via
	     the "next-error" command of xemacs. 

	   I've build something like this for some other project running
	   along much the same lines (one big SGML document split into many
	   partial SGML files and distributed across serveral directories).
	   I'm sure it can be adapted to the structures used here if there
	   is any interest. Well, is there?? 

	2) The second paragraph is no longer valid. Maybe this was a problem 
  	   with older versions of psgml, but at least with current versions
	   of xemacs and psgml (I'm using xemacs-20.4 and psgml 1.2.0) it is 
	   possible to make this work. 
           The inclusion of the local variable sgml-parent-document at the 
	   end of all the .sgml files within the document tree leads me
	   to the conclusion, that this feature is already in use by the
	   maintainers and only the documentation has to be updated.
	  
	   Maybe the wording of this paragraph should be changed to 
	   something along the lines of the following text:

====== begin ===================================================
        "It makes it more difficult for Emacs' sgml-mode to determine the
	 DTD to use, which it needs to provide it's useful benefits of 
	 element completion, automatic validation and so on. 

	 * Make sure the sgml-catalog-files variable contains the paths 
	   to all necessary catalog files. It can be set by specifing the
	   environment variable SGML_CATALOG_FILES (see Example 3-6 and 3-7 
	   in "3.2 Elements, tags, and attributes") or setting it directly
	   within your .emacs file.

           Example: Setting sgml-catalog-files within .emacs
	    (setq sgml-catalog-files '(
			     "/usr/local/share/sgml/docbook/3.1/docbook.cat"
			     "/usr/local/share/sgml/jade/catalog"
			     "/usr/local/share/sgml/iso8879/catalog"
			     "/usr/src/doc/share/sgml/catalog"))

          Note: This does not work if the specified catalog file contains
		references to other catalog files via the CATALOG keyword.
		Emacs' sgml-mode does not follow such references to find
		the declarations of public entities.

	 * Specify sgml-parent-document as local variable within each 
           "partial" sgml file to provide a reference to Emacs' sgml-mode
	   where to look next for the missing DOCTYPE declaration. It is
	   possible to build a chain of multiple sgml files with the last
	   "top level" file containing the DOCTYPE declaration.

	   Put something like this at the end of the each partial sgml files:

	   Example: Use of local variable sgml-parent-document
           <!--
                Local Variables:
                mode: sgml
                sgml-parent-document: ("../book.sgml" "part" "chapter")
                End:
           -->
====== end =====================================================


>Release-Note:
>Audit-Trail:
>Unformatted:


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-doc" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200001291442.PAA00654>