SUBDOC

Subject: SUBDOC
From: Jose Carlos Ramalho <jcr@xxxxxxxxxxxx>
Date: Wed, 14 Oct 1998 16:15:03 +0000 (WET)
Hi, I battled your fight sometime ago.
I have an example that works. In the next month I hope to have some 
graduation students working with me in "Website automatic generation from 
SGML specs". In this context SUBDOC is necessary to face heterogeneous 
websites.

As attachment I am sending you 3 files:
	- a dtd
	- a sgml file 
	- a omnimark script that processes those files and generates a 
tree of HTML pages (you can use the omnimark free version to run it - omle)

I also have produced a document about how to use and implement subdoc, 
but it is written in portuguese (if you want it I can send it).

BTW there are two ways to use SUBDOC in sgml files. One is the one of my 
example, empty elements; the other is through the use of #CONREF attributes.
Elliot Kimber has something written about available on his homepage "Why 
I demand SUBDOC ...".

I have used Omnimark because of the "do sgml-parse" feature which enables 
"subparsing". In Perl I would have to implement this and I did not have 
the time.

I hope this helps
Feel free to ask more questions

jcr

------------------------------------------------------------
Jose Carlos Ramalho        windsurfer / diver / engineer     
                                   orienteer 
Computer Science Dep.           
University of Minho       EMAIL: jcr@xxxxxxxxxxxx
4700 Braga - PORTUGAL	  URL: http://www.di.uminho.pt/~jcr
Tel +351 53 604461/70	  Fax +351 53 604471
------------------------------------------------------------

;
; Script Omnimark para processar uma árvore de DTDs
;   - vai ser usado no repositório GEIRA
; Versão 0.1 - jcr - 27.01.98
;

down-translate

document-start
  do sgml-parse document
     creating dtds key "arq"
     scan file "arqueo.dtd" 
    suppress
  done
  next group is Principal

ELEMENT #IMPLIED
  SUPPRESS

; =========================================================
group Principal
; =========================================================
 
ELEMENT geira
  OUTPUT "<H1>Projecto GEiRA</H1><HR>%n%c<HR>%nVolte sempre ..."

ELEMENT entrada
  OUTPUT "<LI>%c"

ELEMENT logo
  OUTPUT '<IMG SRC="%v(path)">' 
  SUPPRESS

ELEMENT nome
  DO WHEN (ATTRIBUTE url IS SPECIFIED)
    OUTPUT "<A HREF=%v(url)>%c</A>%n"
  ELSE
    OUTPUT "%c%n"
  DONE

ELEMENT arqsit
  DO WHEN (ATTRIBUTE microdoc IS SPECIFIED)
    DO SGML-PARSE INSTANCE
      WITH DOCUMENT-ELEMENT "arqueo"
      WITH DTDS KEY "arq"
      SCAN FILE "%ev(microdoc)"
      USING GROUP Arqueositios DO
        OUTPUT "%c"
      DONE
    DONE
  ELSE
    OUTPUT "ERRO: o subdocumento nao foi especificado!%n"
  DONE
  SUPPRESS

ELEMENT sub
  OUTPUT "<UL>%n%c</UL>%n"

; =========================================================
group Arqueositios
; =========================================================

element ARQUEO
  output "<LI>Arqueositios:%n<UL>%n%c</UL>%n"

element identi
  output "<LI> %c%n"

element liga
  output "%c "


<!DOCTYPE geira SYSTEM "geira.dtd" 
[
<!ENTITY arq SYSTEM "arqueo.sgm" SUBDOC>
]>

<geira>
<entrada>
  <nome tipo="arquivo" url="http://www.geira.pt";>geira</nome>
  <sub>
    <entrada> <nome tipo="unidade">Novas</nome>
    </entrada>
<!-- =================CULTURA=================== -->
    <entrada> <nome tipo="unidade">Cultura</nome>
      <sub>
<!-- =================MUSEUS=================== -->
        <entrada> 
          <nome tipo="unidade">Museus</nome>
          <sub>
            <entrada>
              <nome tipo="entidade" url="http://www.geira.pt/mdds/";>
                Museu D. Diogo de Sousa</nome>
            </entrada>
            <entrada>
              <nome tipo="entidade" 
                    url="http://www.utad.geira.pt/museus/atrio/index.asp?id=7";>
                Museu da Regi&atilde;o Flaviense</nome>
            </entrada>
            <entrada>
              <nome tipo="entidade" 
                    url="http://www.utad.geira.pt/museus/pacosdaseda";>
                Projecto Pa&ccedil;os da Seda</nome> 
            </entrada>
            <entrada>
              <nome tipo="entidade" 
                    url="http://www.utad.geira.pt/museus/abadebacal";>
                Museu do Abade de Ba&ccedil;al</nome>
            </entrada>
            <entrada>
              <nome tipo="entidade" 
                    url="http://www.utad.geira.pt/ferromoncorvo";>
                Museu do Ferro e da Regi&atilde;o de Moncorvo</nome>
            </entrada>
            <entrada>
              <nome tipo="entidade" 
                    url="http://www.utad.geira.pt/museus/atrio/index.asp?id=5";>
                Museu Municipal Armindo Teixeira Lopes</nome>
            </entrada>
          </sub>
        </entrada>
<!-- =================BIBLIOTECAS=================== -->
        <entrada> 
          <nome tipo="unidade">Bibliotecas</nome>
          <sub>
            <entrada>
              <nome tipo="entidade" 
                    url="http://cde.ci.uminho.pt";>
                Centro de Documenta&ccedil;&atilde;o Europeia da Universidade do Minho</nome>
            </entrada>
          </sub>
        </entrada>
<!-- =================ARQUEOLOGIA=================== -->
        <entrada> 
          <nome tipo="unidade">Arqueologia</nome>
          <sub>
            <arqsit microdoc="arq">
            <entrada>
              <nome tipo="entidade" 
                    url="http://www.utad.geira.pt/panoias";>
                S&iacute;tio Arqueol&oacute;gico de Panoias</nome> 
            </entrada>
            <entrada>
              <nome tipo="entidade" 
                    url="http://www.utad.geira.pt/museus/atrio/index.asp?id=6";>
                Sala-Museu Municipal de Arqueologia</nome>
            </entrada>
          </sub>
        </entrada>
<!-- =================ARQUIVOS====================== -->
        <entrada> 
          <nome tipo="unidade">Arquivos</nome>
          <sub>
            <entrada>
              <nome tipo="entidade" url="http://www.adb.pt";>
                Arquivo Distrital de Braga</nome>
            </entrada>
          </sub>
        </entrada>
      </sub>
    </entrada>
<!-- ============================================== -->
<!-- ================NATURA======================== -->
    <entrada> 
      <nome tipo="unidade">Natura</nome>
      <sub>
<!-- ================AREAS NATURAIS================ -->
        <entrada>
          <nome tipo="unidade">&Aacute;reas Naturais</nome>
          <sub>
            <entrada>
              <nome tipo="entidade" url="http://www.utad.geira.pt/pnal";>
                Parque Natural do Alv&atilde;o</nome>
            </entrada>
            <entrada>
              <nome tipo="entidade" url="http://www.geira.pt/pnpg";>
                Parque Nacional da Peneda-Ger&ecirc;s</nome>
            </entrada>
            <entrada>
              <nome tipo="entidade" url="http://www.geira.pt/aple";>
                &Aacute;rea protegida do litoral de Esposende</nome>
            </entrada>
          </sub>
        </entrada>
<!-- ================LAZER========================= -->
        <entrada>
          <nome tipo="unidade">Lazer</nome>
          <sub>
            <entrada>
              <nome tipo="unidade"
                    url="http://www.di.uminho.pt/~jcr/o.html";>Orienta&ccedil;&atilde;o</nome>
            </entrada>
            <entrada>
              <nome tipo="unidade"
                   url ="http://www.utad.geira.pt/pnal/visitas/subsite/index.asp?id=1";>
                Trilhos no Alv&atilde;o</nome>
            </entrada>
          </sub>
        </entrada>
<!-- ================TURISMO DE HABITA&Ccedil;&Atilde;O========== -->
        <entrada>
          <nome tipo="unidade">Turismo de Habita&ccedil;&atilde;o</nome>
          <sub>
            <entrada>
              <nome tipo="unidade" 
                    url="http://www.utad.pt/Extensao/Quintas_do_Douro";>
                Quintas do Douro</nome>
            </entrada>
            <entrada>
              <nome tipo="unidade" 
                    url="http://www.sidra.pt/turihab/index.html";>
                Solares de Portugal</nome>
            </entrada>
          </sub>
        </entrada>
      </sub>
    </entrada>
<!-- ============================================== -->
<!-- ================CIENCIA======================= -->
    <entrada> <nome tipo="unidade">Ci&ecirc;ncia e Tecnologia</nome>
    </entrada>
<!-- ============================================== -->
<!-- ================ALFARRABIO==================== -->
    <entrada> 
      <nome tipo="arquivo"
            url="http://alfarrabio.um.geira.pt";>Alfarr&aacute;bio</nome>
    </entrada>
  </sub>
</entrada>
</geira>

<!-- GEIRA.DTD  Versao 0.1  jcr&jj
     a ser utilizado numa especificacao top-down do Geira -->

<!ENTITY  % isolat1 SYSTEM "ISOlat1.sgm">
%isolat1;

<!ELEMENT geira   - -  (entrada+)>

<!ELEMENT entrada - -  (logo?,nome, sub?)>

<!ELEMENT sub     - -  ((entrada|arqsit)+)>

<!ELEMENT nome    - -  (#PCDATA)>

<!ATTLIST nome tipo     NMTOKEN  #IMPLIED
               url      CDATA    #IMPLIED>
              
<!ELEMENT arqsit   - -  EMPTY> 
<!ATTLIST arqsit
               microdoc ENTITY   #REQUIRED>

<!ELEMENT logo - -  EMPTY>

<!ATTLIST logo path CDATA    #REQUIRED>
Current Thread
  • SUBDOC
    • Jose Carlos Ramalho - Wed, 14 Oct 1998 11:52:58 -0400 (EDT) <=