<?xml version="1.0" encoding="UTF-8"?>
<!--  

Jeffrey Ricker NG (Usonia Holdings) 
[EMAIL PROTECTED] 
2001.07.15


NOTE:
* INITIAL DRAFT for DTD for the Cocoon2 XMAP file
* Needed by many editing tools for creating documents easier.
* Can generate XSD once DTD is locked down
* Developed from the XMAP instance included in current download
* The big questions are: 
  "What possibilities were not included in the example?" and 
  "What in the example is mandatory versus optional?"
-->

<!ELEMENT sitemap (components, views, resources, action-sets, pipelines)>

<!-- ===========COMPONENTS =============================-->

<!ELEMENT components (generators, transformers, readers, serializers, selectors, matchers, actions)>
<!-- RNG: must they appear in this order? must they all appear, even if they are empty? -->

<!ELEMENT generators (generator*)>
<!ATTLIST generators
	default CDATA #IMPLIED
>
<!ELEMENT generator EMPTY>
<!ATTLIST generator
	name CDATA #REQUIRED
	src CDATA #REQUIRED
	label CDATA #IMPLIED
>

<!-- RNG: with all attributes, which are required and which are implied? -->

<!ELEMENT transformers (transformer*)>
<!ATTLIST transformers
	default CDATA #IMPLIED
>
<!ELEMENT transformer ANY>
<!-- RNG: surely the content is not ANY. However, there were so many children here that I did not know where to begin -->
<!ATTLIST transformer
	name CDATA #REQUIRED
	src CDATA #REQUIRED
>
<!ELEMENT readers (reader*)>
<!ATTLIST readers
	default CDATA #IMPLIED
>
<!ELEMENT reader EMPTY>
<!-- RNG: does reader ever have children? Its peers do. -->
<!ATTLIST reader
	name CDATA #REQUIRED
	src CDATA #REQUIRED
>
<!ELEMENT serializers (serializer*)>
<!ATTLIST serializers
	default CDATA #IMPLIED
>
<!ELEMENT serializer (doctype-public?, doctype-system?)>
<!-- RNG: are these the only children of serializer? -->
<!ATTLIST serializer
	name CDATA #REQUIRED
	mime-type CDATA #REQUIRED
	src CDATA #REQUIRED
>
<!ELEMENT doctype-public (#PCDATA)>
<!ELEMENT doctype-system (#PCDATA)>
<!ELEMENT selectors (selector*)>
<!ATTLIST selectors
	default CDATA #IMPLIED
>
<!ELEMENT selector (browser*)>
<!ATTLIST selector
	name CDATA #REQUIRED
	src CDATA #REQUIRED
>
<!ELEMENT browser EMPTY>
<!ATTLIST browser
	name CDATA #REQUIRED
	useragent CDATA #REQUIRED
>
<!ELEMENT matchers (matcher*)>
<!ATTLIST matchers
	default CDATA #IMPLIED
>
<!ELEMENT matcher EMPTY>
<!ATTLIST matcher
	name CDATA #REQUIRED
	src CDATA #REQUIRED
>
<!ELEMENT actions (action*)>
<!ATTLIST actions
	default CDATA #IMPLIED
>
<!ELEMENT action EMPTY>
<!ATTLIST action
	name CDATA #REQUIRED
	src CDATA #REQUIRED
>
<!-- ===========VIEWS =============================-->
<!ELEMENT views (view*)>
<!ELEMENT view (serialize)>
<!ATTLIST view
	name CDATA #REQUIRED
	from-label CDATA #IMPLIED
	from-position CDATA #IMPLIED
>
<!ELEMENT serialize EMPTY>
<!ATTLIST serialize
	type CDATA #REQUIRED
>
<!-- ===========RESOURCES =============================-->
<!ELEMENT resources (resource*)>
<!ELEMENT resource (generate, transform, serialize)>
<!ATTLIST resource
	name CDATA #REQUIRED
>
<!-- generate and transform defined in PIPELINE section -->
<!-- ===========ACTIONSETS =============================-->
<!ELEMENT action-sets (action-set*)>
<!ELEMENT action-set (act+)>
<!ATTLIST action-set
	name CDATA #REQUIRED
>
<!ELEMENT act EMPTY>
<!ATTLIST act
	type CDATA #REQUIRED
	action CDATA #REQUIRED
>
<!-- ===========PIPELINES =============================-->
<!ELEMENT pipelines (pipeline*)>
<!ELEMENT pipeline (match*, handle-errors?)>
<!ELEMENT match ((mount* | redirect-to* | generate* | transform* | serialize* | read* | aggregate*)*)>
<!-- RNG: It seemed from the example that match should be defined as
  match (mount*|redirect-to*|(generate*,transform*,serialize*)*|read*|aggregate*)
  but I have no way of knowing.
-->
<!ATTLIST match
	type CDATA #IMPLIED
	pattern CDATA #REQUIRED
>
<!ELEMENT mount EMPTY>
<!ATTLIST mount
	uri-prefix CDATA #REQUIRED
	src CDATA #REQUIRED
	check-reload (yes | no) "no"
>
<!ELEMENT redirect-to EMPTY>
<!ATTLIST redirect-to
	uri CDATA #REQUIRED
>
<!ELEMENT generate (parameter*)>
<!ATTLIST generate
	type CDATA #IMPLIED
	src CDATA #IMPLIED
>
<!ELEMENT parameter EMPTY>
<!ATTLIST parameter
	name CDATA #REQUIRED
	value CDATA #REQUIRED
>
<!ELEMENT transform (parameter*)>
<!ATTLIST transform
	type CDATA #IMPLIED
	src CDATA #IMPLIED
>
<!-- serialize already defined in VIEWS section -->
<!ELEMENT read EMPTY>
<!ATTLIST read
	src CDATA #REQUIRED
	mime-type CDATA #REQUIRED
>
<!ELEMENT aggregate (part*)>
<!ATTLIST aggregate
	element CDATA #IMPLIED
	ns CDATA #IMPLIED
>
<!ELEMENT part EMPTY>
<!ATTLIST part
	src CDATA #IMPLIED
	element CDATA #IMPLIED
	ns CDATA #IMPLIED
>
<!ELEMENT handle-errors (generate* | transform* | serialize*)>
<!-- RNG: or is it (generate*,transform*,serialize*) -->



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to