You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by cr...@apache.org on 2001/11/28 07:07:05 UTC

cvs commit: xml-cocoon2/documentation/xdocs/dtd sitemap-v02.dtd

crossley    01/11/27 22:07:05

  Added:       documentation/xdocs/dtd sitemap-v02.dtd
  Log:
  Build upon initial non-authoritative DTD to attempt to document the structure
  of sitemaps.
  
  Revision  Changes    Path
  1.1                  xml-cocoon2/documentation/xdocs/dtd/sitemap-v02.dtd
  
  Index: sitemap-v02.dtd
  ===================================================================
  <!-- ===================================================================
  
       Apache Cocoon Sitemap DTD (Version 0.2)
  
  PURPOSE:
    INITIAL DRAFT DTD for the Cocoon2 sitemap.xmap files.
  
  TYPICAL INVOCATION:
  
    <!DOCTYPE map:sitemap PUBLIC
         "-//APACHE//DTD Cocoon Sitemap Vx.yz//EN"
         "sitemap-vxyz.dtd">
  
    where
  
      x := major version
      y := minor version
      z := status identifier (optional)
  
  NOTES:
  * ATTENTION: This initial DTD was reverse-engineered from the various
    sitemap.xmap instances included in the current distribution. This is
    just an attempt to document the existing rules for sitemap structure.
    In many cases a very lax content model is used, simply to get around
    validation issues.
    A proper design process is still required.
  * Needed by XML editing tools for creation of reliable documents.
  * Can generate XSD once DTD is locked down.
  * We need to synchronise this DTD with the relax-ng work
    by <Br...@the-ecorp.com> ... cocoon-dev 2001-07-18
    http://marc.theaimsgroup.com/?l=xml-cocoon-dev&m=99545886226916&w=2
  * This DTD has been tested with various XML validating parsers.
  * The big questions (still) are: 
    "What possibilities were not included in the examples?" and 
    "What in the example sitemap.xmap files is mandatory versus optional?"
  
  AUTHORS:
    Jeffrey Ricker NG (Usonia Holdings) <ri...@usonia.net>
    David Crossley <cr...@indexgeo.com.au>
  
  FIXME:
    - map:act is used in various contexts, so it has a loose definition
    - Completely rewrite this DTD looking from the application
      point-of-view (do not rely on this temporary initial DTD)
    - map:when and map:otherwise are shown in xdocs/sitemap.xml but are
      not used in the sitemap.xmap files
    - align elements and attributes with sitemap*.xsl
    - review all xdocs/userdocs/generators/*.xml etc. and sync with this DTD
  
  CHANGE HISTORY:
    20010715 V0.1 Initial version. (RNG)
    20011106 V0.2 Reviewed all */sitemap.xmap and added definitions (DC)
    20011106 V0.2 All elements now have "map:" prefix. (DC)
    20011106 V0.2 Incorporated comments Bruno Dumon cocoon-dev 20010718 (DC)
    20011116 V0.2 Changes from label/view discussion cocoon-dev 20011115 (DC)
  
  ==================================================================== -->
  
  <!ELEMENT map:sitemap (map:components, map:views?, map:resources?,
                         map:action-sets?, map:pipelines)>
  <!ATTLIST map:sitemap
          xmlns:map CDATA #FIXED "http://apache.org/cocoon/sitemap/1.0"
  >
  
  <!-- =============================================================== -->
  <!-- Components -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:components (map:generators, map:transformers, map:readers,
                            map:serializers, map:selectors?, map:matchers?,
                            map:actions?)>
  <!-- RNG: must they appear in this order?
            must they all appear, even if they are empty? -->
  <!-- DC: it seems that some sitemaps do not contain all components
           e.g. documentation/sitemap.xmap does not have map:selectors -->
  
    <!-- Generators ======================================== -->
  <!ELEMENT map:generators (map:generator*)>
  <!ATTLIST map:generators
  	default CDATA #IMPLIED
  >
  <!ELEMENT map:generator EMPTY>
  <!ATTLIST map:generator
  	name CDATA #REQUIRED
  	src CDATA #REQUIRED
  	label CDATA #IMPLIED
  	pool-max CDATA #IMPLIED
  	pool-min CDATA #IMPLIED
  	pool-grow CDATA #IMPLIED
  >
  
  <!-- RNG: with all attributes, which are required and which are implied? -->
  
    <!-- Transformers ====================================== -->
  <!ELEMENT map:transformers (map:transformer*)>
  <!ATTLIST map:transformers
  	default CDATA #IMPLIED
  >
  <!ELEMENT map:transformer ANY>
  <!-- RNG: surely the content is not ANY. However, there were so many
            children here that I did not know where to begin -->
  <!-- DC: here are some that are currently used -->
  <!ELEMENT use-store (#PCDATA)>
  <!ELEMENT use-request-parameters (#PCDATA)>
  <!ELEMENT use-browser-capabilities-db (#PCDATA)>
  <!ELEMENT catalogue-name (#PCDATA)>
  <!ELEMENT catalogue-location (#PCDATA)>
  <!ATTLIST map:transformer
  	name CDATA #REQUIRED
  	src CDATA #REQUIRED
  	label CDATA #IMPLIED
  	pool-max CDATA #IMPLIED
  	pool-min CDATA #IMPLIED
  	pool-grow CDATA #IMPLIED
  >
  
    <!-- Readers =========================================== -->
  <!ELEMENT map:readers (map:reader*)>
  <!ATTLIST map:readers
  	default CDATA #IMPLIED
  >
  <!ELEMENT map:reader EMPTY>
  <!-- RNG: does reader ever have children? Its peers do. -->
  <!ATTLIST map:reader
  	name CDATA #REQUIRED
  	src CDATA #REQUIRED
  >
  
    <!-- Serializers ======================================= -->
  <!ELEMENT map:serializers (map:serializer*)>
  <!ATTLIST map:serializers
  	default CDATA #IMPLIED
  >
  <!ELEMENT map:serializer (doctype-public|doctype-system|encoding|
                            omit-xml-declaration|parameter)*>
  <!-- RNG: are these the only children of serializer? -->
  <!ATTLIST map:serializer
  	name CDATA #REQUIRED
  	mime-type CDATA #REQUIRED
  	src CDATA #REQUIRED
  	pool-max CDATA #IMPLIED
  	pool-min CDATA #IMPLIED
  	pool-grow CDATA #IMPLIED
  >
  <!ELEMENT doctype-public (#PCDATA)>
  <!ELEMENT doctype-system (#PCDATA)>
  <!ELEMENT encoding (#PCDATA)>
  <!ELEMENT omit-xml-declaration (#PCDATA)>
  <!ELEMENT parameter EMPTY>
  <!ATTLIST parameter
  	name CDATA #REQUIRED
  	value CDATA #REQUIRED
  	type CDATA #IMPLIED
  >
  
    <!-- Selectors ========================================= -->
  <!ELEMENT map:selectors (map:selector*)>
  <!ATTLIST map:selectors
  	default CDATA #IMPLIED
  >
  <!ELEMENT map:selector (browser*)>
  <!ATTLIST map:selector
  	name CDATA #REQUIRED
  	src CDATA #REQUIRED
  >
  <!ELEMENT browser EMPTY>
  <!ATTLIST browser
  	name CDATA #REQUIRED
  	useragent CDATA #REQUIRED
  >
  
    <!-- Matchers ========================================== -->
  <!ELEMENT map:matchers (map:matcher*)>
  <!ATTLIST map:matchers
  	default CDATA #IMPLIED
  >
  <!ELEMENT map:matcher (attribute-name|parameter-name|header-name)*>
  <!ATTLIST map:matcher
  	name CDATA #REQUIRED
  	src CDATA #REQUIRED
  >
  <!ELEMENT attribute-name (#PCDATA)>
  <!ELEMENT parameter-name (#PCDATA)>
  <!ELEMENT header-name (#PCDATA)>
  
    <!-- Actions =========================================== -->
  <!ELEMENT map:actions (map:action*)>
  <!ATTLIST map:actions
  	default CDATA #IMPLIED
  >
  <!ELEMENT map:action EMPTY>
  <!ATTLIST map:action
  	name CDATA #REQUIRED
  	src CDATA #REQUIRED
  >
  
  <!-- =============================================================== -->
  <!-- Views -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:views (map:view*)>
  <!ELEMENT map:view (map:transform*,map:serialize)>
  <!ATTLIST map:view
  	name CDATA #REQUIRED
  	from-label CDATA #IMPLIED
  	from-position (first|last) "last"
  >
  <!ELEMENT map:serialize (map:parameter*)>
  <!ATTLIST map:serialize
  	type CDATA #REQUIRED
  	mime-type CDATA #IMPLIED
  	status-code CDATA #IMPLIED
  >
  
  <!-- =============================================================== -->
  <!-- Resources -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:resources (map:resource*)>
  <!ELEMENT map:resource ((map:generate,map:transform+,map:serialize) | map:act)>
  <!ATTLIST map:resource
  	name CDATA #REQUIRED
  >
  <!-- generate and transform defined in PIPELINE section -->
  
  <!-- =============================================================== -->
  <!-- Action Sets -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:action-sets (map:action-set*)>
  <!ELEMENT map:action-set (map:act+)>
  <!ATTLIST map:action-set
  	name CDATA #REQUIRED
  >
  <!ELEMENT map:act (map:parameter|map:redirect-to|map:generate|
                     map:transform|map:serialize|map:act|map:match)*>
  <!ATTLIST map:act
  	type CDATA #IMPLIED
  	action CDATA #IMPLIED
  	set CDATA #IMPLIED
  >
  
  <!-- =============================================================== -->
  <!-- Pipelines -->
  <!-- =============================================================== -->
  
  <!ELEMENT map:pipelines (map:pipeline*)>
  <!ELEMENT map:pipeline (map:match*, map:handle-errors?)>
  
  <!ELEMENT map:match (map:mount | map:redirect-to | map:generate |
                       map:transform | map:serialize | map:read |
                       map:aggregate | map:act | map:match)*>
  <!-- RNG: It seemed from the example that match should be defined as
    match (map:mount*|map:redirect-to*|(map:generate*,map:transform*,map:serialize*)*|map:read*|map:aggregate*)
    but I have no way of knowing.
  -->
  <!-- DC: Now map:act complicates the content model even further -->
  <!ATTLIST map:match
  	type CDATA #IMPLIED
  	pattern CDATA #REQUIRED
  >
  
  <!-- map:act is already defined in the Action Sets section -->
  
  <!ELEMENT map:mount EMPTY>
  <!ATTLIST map:mount
  	uri-prefix CDATA #REQUIRED
  	src CDATA #REQUIRED
  	reload-method (synchron|asynchron) "asynchron"
  	check-reload (true|false|yes|no) "no"
  >
  
  <!ELEMENT map:redirect-to EMPTY>
  <!ATTLIST map:redirect-to
  	uri CDATA #IMPLIED
  	resource CDATA #IMPLIED
  	target CDATA #IMPLIED
  	session (true|false|yes|no) "no"
  >
  
  <!ELEMENT map:generate (map:parameter*)>
  <!ATTLIST map:generate
  	type CDATA #IMPLIED
  	src CDATA #IMPLIED
  	label CDATA #IMPLIED
  >
  <!ELEMENT map:parameter EMPTY>
  <!ATTLIST map:parameter
  	name CDATA #REQUIRED
  	value CDATA #REQUIRED
  >
  
  <!ELEMENT map:transform (map:parameter*)>
  <!ATTLIST map:transform
  	type CDATA #IMPLIED
  	src CDATA #IMPLIED
  	label CDATA #IMPLIED
  >
  
  <!-- map:serialize is already defined in VIEWS section -->
  
  <!ELEMENT map:read EMPTY>
  <!ATTLIST map:read
  	src CDATA #REQUIRED
  	mime-type CDATA #REQUIRED
  	type CDATA #IMPLIED
  >
  
  <!ELEMENT map:aggregate (map:part*)>
  <!ATTLIST map:aggregate
  	element CDATA #IMPLIED
  	prefix CDATA #IMPLIED
  	ns CDATA #IMPLIED
  	label CDATA #IMPLIED
  >
  <!ELEMENT map:part EMPTY>
  <!ATTLIST map:part
  	src CDATA #IMPLIED
  	element CDATA #IMPLIED
  	ns CDATA #IMPLIED
  	strip-root CDATA #IMPLIED
  	label CDATA #IMPLIED
  >
  
  <!ELEMENT map:handle-errors (map:generate*,map:transform*,map:serialize*)>
  
  <!-- =============================================================== -->
  <!-- End of DTD -->
  <!-- =============================================================== -->
  
  
  

----------------------------------------------------------------------
In case of troubles, e-mail:     webmaster@xml.apache.org
To unsubscribe, e-mail:          cocoon-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: cocoon-cvs-help@xml.apache.org