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]>