Re: DTD for the WebDav Elements

Here's a condensed version of John Turner's DTD, with some modifications.
It parses as XML, and sure helps (me, at least) see the structure of
what's being proposed.

Regards,

  Terry Allen    Electronic Publishing Consultant    tallen[at]sonic.net
                   http://www.sonic.net/~tallen/
    Davenport and DocBook:  http://www.ora.com/davenport/index.html
              at CNgroup:  terry.allen[at]cngroup.com

<!-- John Turner's WEBDAV DTD of 14 Oct 97, with his comments removed,
"D:" prefixes deleted for readability, some XML corrections made, and
sequence of declarations rearranged.
Terry Allen, 19 Oct 97 -->

<!-- activelock is a top-level element -->
<!ELEMENT activelock (locktype?, lockscope?, owner?,
                        timeout?, locktoken?) >

<!ELEMENT lockentry (locktype, lockscope) >
<!ELEMENT owner (#PCDATA|XML:REF)* >

<!-- what is XML:REF? -->
<!ELEMENT locktoken (XML:REF) >

<!ELEMENT locktype (#PCDATA) >
<!ELEMENT lockscope (#PCDATA) >

<!ELEMENT timeout (clocktype?, timetype?, timeoutval?) >

<!ELEMENT clocktype (#PCDATA) >
<!ELEMENT timetype (#PCDATA) >
<!ELEMENT timeoutval (#PCDATA) >

<!-- supportedlock is a top-level element -->
<!ELEMENT supportedlock (lockentry)* >

<!-- GETentity is a top-level element -->
<!ELEMENT GETentity (Content-Type?, Content-Length?,
                       Content-Language?, Last-Modified?,
                       Etag?, Creation-Date?) >

<!ELEMENT Content-Type (#PCDATA) >
<!ELEMENT Content-Length (#PCDATA) >
<!ELEMENT Content-Language (#PCDATA) >
<!ELEMENT Last-Modified (#PCDATA) >
<!ELEMENT Etag (#PCDATA) >
<!ELEMENT Creation-Date (#PCDATA) >

<!-- INDEXentity is a top-level element -->
<!ELEMENT INDEXentity (Content-Type?, Content-Length?,
                         Content-Language?, Last-Modified?,
                         Etag?, Creation-Date?) >

<!-- dav is a top-level element -->
<!ELEMENT dav (propschema, level)>

<!ELEMENT propschema (DTD?, DefinedProps?) >

<!ELEMENT DTD ANY>
<!ELEMENT DefinedProps (PropEntries+) >
<!ELEMENT PropEntries (prop, DTD?, Live?)>
<!ELEMENT prop ANY>
<!ELEMENT Live EMPTY>

<!ELEMENT level (#PCDATA)>

<!-- MultiResponse is a top-level element -->
<!ELEMENT MultiResponse (response+, ResponseDescription?) >
<!ELEMENT response ( ( prop | href ), status, ResponseDescription?)>

<!ELEMENT href (#PCDATA) >
<!ELEMENT status (#PCDATA) >
<!ELEMENT ResponseDescription (#PCDATA) >

<!-- PropertyUpdate is a top-level element -->
<!ELEMENT PropertyUpdate (Create | Remove)* >
<!ELEMENT Create (prop) >
<!ELEMENT Remove (prop) >

<!-- Propfind is a top-level element -->
<!ELEMENT Propfind (prop | AllProp | Propname) >
<!ELEMENT Allprop EMPTY >
<!ELEMENT Propname EMPTY >

<!-- PropFindResult is a top-level element -->
<!ELEMENT PropFindResult (Prop) >

<!-- source is a top-level element -->
<!ELEMENT source (link)* >
<!ELEMENT link (src+, dst+)>
<!ELEMENT src (#PCDATA) >
<!ELEMENT dst (#PCDATA) >

<!-- IsCollection is a top-level element -->
<!ELEMENT IsCollection (#PCDATA) >

<!-- DisplayName is a top-level element -->
<!ELEMENT DisplayName (#PCDATA) >

<!-- resinfo is a top-level element -->
<!ELEMENT resinfo (href+, prop, members?) >
<!ELEMENT members (resinfo)* >

<!-- ressourceupdate is a top-level element -->
<!ELEMENT resourceupdate (insert | delete | replace)* >
<!ELEMENT insert (#PCDATA | octet-range)* >
<!-- same attributes declared twice, differently -->
<!ATTLIST insert XML-SPACE (DEFAULT|PRESERVE) #IMPLIED >
<!ATTLIST insert XML-SPACE (PRESERVE) #FIXED 'PRESERVE' >

<!ELEMENT delete (#PCDATA | octet-range)* >
<!ELEMENT replace (#PCDATA | octet-range)* >
<!-- same attributes declared twice, differently -->
<!ATTLIST replace XML-SPACE (DEFAULT|PRESERVE) #IMPLIED >
<!ATTLIST replace XML-SPACE (PRESERVE) #FIXED 'PRESERVE'>

<!ELEMENT octet-range (#PCDATA) >

Received on Sunday, 19 October 1997 12:29:19 UTC