Has anyone come up with a reasonably rigorous DTD for the sitemap? I know
its been talked about at various times, but I haven't found one yet.
I've cobbled together the following DTD, which I find handy with emacs xml
(psgml) mode. It handles the cocoon-2.0.2 sitemap OK and should be handy
with other xml DTD aware editors. Any feedback and improvements would be
welcome.
The lack of "name groups" (a SGML DTD feature) in XML DTDs makes the DTD
very repetitive and awkward to maintain.
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT act (parameter*, (read | ( (act | match | select)*, (generate |
aggregate)?, (act | match | select)*, transform*, (act | match | select)*,
serialize?, redirect-to?, call? ) ) )>
<!ATTLIST act
type CDATA #IMPLIED
action CDATA #IMPLIED
set CDATA #IMPLIED
>
<!ELEMENT action ANY>
<!ATTLIST action
name CDATA #REQUIRED
src CDATA #REQUIRED
logger CDATA #IMPLIED
>
<!ELEMENT action-set (act+)>
<!ATTLIST action-set
name CDATA #REQUIRED
>
<!ELEMENT action-sets (action-set*)>
<!ELEMENT actions (action*)>
<!ELEMENT aggregate (part+)>
<!ATTLIST aggregate
element CDATA #REQUIRED
ns CDATA #IMPLIED
>
<!ELEMENT attribute-name (#PCDATA)>
<!ELEMENT browser EMPTY>
<!ATTLIST browser
name CDATA #REQUIRED
useragent CDATA #REQUIRED
>
<!ELEMENT buffer-size (#PCDATA)>
<!ELEMENT call (parameter?)>
<!ATTLIST call
resource CDATA #REQUIRED
><!ELEMENT catalogue-location (#PCDATA)>
<!ELEMENT catalogue-name (#PCDATA)>
<!ELEMENT components (generators, transformers, readers, serializers,
matchers, selectors, actions)>
<!ELEMENT dburl (#PCDATA)>
<!ELEMENT doctype-public (#PCDATA)>
<!ELEMENT doctype-system (#PCDATA)>
<!ELEMENT encoding (#PCDATA)>
<!ELEMENT generate (parameter*)>
<!ATTLIST generate
src CDATA #IMPLIED
type CDATA #IMPLIED
>
<!ELEMENT generator EMPTY>
<!ATTLIST generator
name CDATA #REQUIRED
label CDATA #IMPLIED
logger CDATA #IMPLIED
pool-max CDATA #IMPLIED
pool-min CDATA #IMPLIED
pool-grow CDATA #IMPLIED
src CDATA #REQUIRED
>
<!ELEMENT generators (generator*)>
<!ATTLIST generators
default CDATA #IMPLIED
>
<!ELEMENT handle-errors (transform*, serialize)>
<!ELEMENT header-name (#PCDATA)>
<!ELEMENT match (mount | read | ( (act | match | select)*, (generate |
aggregate)?, (act | match | select)*, transform*, (act | match | select)*,
serialize?, redirect-to?, call? ))>
<!ATTLIST match
pattern CDATA #REQUIRED
type CDATA #IMPLIED
>
<!ELEMENT matcher (attribute-name? | parameter-name? | header-name?)>
<!ATTLIST matcher
name CDATA #REQUIRED
src CDATA #REQUIRED
logger CDATA #IMPLIED
>
<!ELEMENT matchers (matcher*)>
<!ATTLIST matchers
default CDATA #IMPLIED
>
<!ELEMENT mount EMPTY>
<!ATTLIST mount
uri-prefix CDATA #REQUIRED
src CDATA #REQUIRED
check-reload CDATA #IMPLIED
reload-method CDATA #IMPLIED
>
<!ELEMENT omit-xml-declaration (#PCDATA)>
<!ELEMENT otherwise (read | ( (act | match | select)*, (generate |
aggregate)?, (act | match | select)*, transform*, (act | match | select)*,
serialize?, redirect-to?, call? ) )>
<!ELEMENT parameter EMPTY>
<!ATTLIST parameter
name CDATA #REQUIRED
value CDATA #REQUIRED
>
<!ELEMENT parameter-name (#PCDATA)>
<!ELEMENT part EMPTY>
<!ATTLIST part
src CDATA #REQUIRED
element CDATA #REQUIRED
ns CDATA #IMPLIED
>
<!ELEMENT pipeline (match*, handle-errors?)>
<!ATTLIST pipeline
id CDATA #IMPLIED
internal-only (true|false) #IMPLIED
>
<!ELEMENT pipelines (pipeline+)>
<!ELEMENT read EMPTY>
<!ATTLIST read
src CDATA #REQUIRED
mime-type CDATA #REQUIRED
type (jsp) #REQUIRED
>
<!ELEMENT reader EMPTY>
<!ATTLIST reader
name CDATA #REQUIRED
src CDATA #REQUIRED
logger CDATA #IMPLIED
pool-max CDATA #IMPLIED
pool-min CDATA #IMPLIED
pool-grow CDATA #IMPLIED
>
<!ELEMENT readers (reader*)>
<!ATTLIST readers
default CDATA #REQUIRED
>
<!ELEMENT redirect-to EMPTY>
<!ATTLIST redirect-to
resource CDATA #IMPLIED
target CDATA #IMPLIED
uri CDATA #IMPLIED
session (true|false) #IMPLIED
>
<!ELEMENT resource (read | ( (act | match | select)*, (generate |
aggregate)?, (act | match | select)*, transform*, (act | match | select)*,
serialize?, redirect-to?, call? ))>
<!ATTLIST resource
name CDATA #REQUIRED
>
<!ELEMENT resources (resource*)>
<!ELEMENT select (parameter*, when+, otherwise?)>
<!ATTLIST select
type CDATA #IMPLIED
>
<!ELEMENT selector (browser* | parameter-name*)>
<!ATTLIST selector
name CDATA #REQUIRED
src CDATA #REQUIRED
logger CDATA #IMPLIED
>
<!ELEMENT selectors (selector*)>
<!ATTLIST selectors
default CDATA #IMPLIED
>
<!ELEMENT serialize EMPTY>
<!ATTLIST serialize
type (fo2pdf | html | links | svg2jpeg | svg2png | vrml | wap | xml)
#IMPLIED
status-code CDATA #IMPLIED
>
<!ELEMENT serializer (doctype-public?, doctype-system?, encoding?,
omit-xml-declaration?, buffer-size?)>
<!ATTLIST serializer
name (fo2pcl | fo2pdf | fo2ps | html | links | svg2jpeg | svg2png | svgxml
| vrml | wap | xml) #REQUIRED
src (org.apache.cocoon.serialization.FOPSerializer |
org.apache.cocoon.serialization.HTMLSerializer |
org.apache.cocoon.serialization.LinkSerializer |
org.apache.cocoon.serialization.SVGSerializer |
org.apache.cocoon.serialization.TextSerializer |
org.apache.cocoon.serialization.XMLSerializer) #REQUIRED
mime-type CDATA #IMPLIED
logger CDATA #IMPLIED
pool-max CDATA #IMPLIED
pool-min CDATA #IMPLIED
pool-grow CDATA #IMPLIED
>
<!ELEMENT serializers (serializer+)>
<!ATTLIST serializers
default CDATA #REQUIRED
>
<!ELEMENT sitemap (components, views, resources, action-sets, pipelines)>
<!ATTLIST sitemap
xmlns CDATA #REQUIRED
>
<!ELEMENT transform (parameter*)>
<!ATTLIST transform
src CDATA #IMPLIED
type (extractor | readDOMsession | sql | writeDOMsession | xslt) #IMPLIED
>
<!ELEMENT transformer (use-request-parameters?,
use-browser-capabilities-db?, catalogue-name?, catalogue-location?,
use-deli?)>
<!ATTLIST transformer
name (cinclude | extractor | filter | i18n | log | readDOMsession | sql |
writeDOMsession | xinclude | xslt | xt) #REQUIRED
src (org.apache.cocoon.transformation.CIncludeTransformer |
org.apache.cocoon.transformation.FilterTransformer |
org.apache.cocoon.transformation.FragmentExtractorTransformer |
org.apache.cocoon.transformation.I18nTransformer |
org.apache.cocoon.transformation.LogTransformer |
org.apache.cocoon.transformation.ReadDOMSessionTransformer |
org.apache.cocoon.transformation.SQLTransformer |
org.apache.cocoon.transformation.TraxTransformer |
org.apache.cocoon.transformation.WriteDOMSessionTransformer |
org.apache.cocoon.transformation.XIncludeTransformer |
org.apache.cocoon.transformation.XTTransformer) #REQUIRED
logger CDATA #IMPLIED
pool-max CDATA #IMPLIED
pool-min CDATA #IMPLIED
pool-grow CDATA #IMPLIED
>
<!ELEMENT transformers (transformer+)>
<!ATTLIST transformers
default CDATA #REQUIRED
>
<!ELEMENT use-browser-capabilities-db (#PCDATA)>
<!ELEMENT use-deli (#PCDATA)>
<!ELEMENT use-request-parameters (#PCDATA)>
<!ELEMENT view (transform?, serialize)>
<!ATTLIST view
name CDATA #REQUIRED
from-label CDATA #IMPLIED
from-position CDATA #IMPLIED
>
<!ELEMENT views (view*)>
<!ELEMENT when (read | ( (act | match | select)*, (generate | aggregate)?,
(act | match | select)*, transform*, (act | match | select)*, serialize?,
redirect-to?, call? ) )>
<!ATTLIST when
test CDATA #REQUIRED
>
---------------------------------------------------------------------
Please check that your question has not already been answered in the
FAQ before posting. <http://xml.apache.org/cocoon/faqs.html>
To unsubscribe, e-mail: <[EMAIL PROTECTED]>
For additional commands, e-mail: <[EMAIL PROTECTED]>