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

Reply via email to