Fred L. Drake Fred L. Drake, Jr." <fdrake@acm.org
Fri, 25 Sep 1998 17:03:30 -0400 (EDT)

Content-Type: text/plain; charset=us-ascii
Content-Description: message body text
Content-Transfer-Encoding: 7bit

Marc van Grootel writes:
 > The folder element still had a reference to an 'info' element which
 > didn't exist anymore. However I would vote for leaving 'info' in as a
 > container for the appdata and metadata. This makes it easier to skip

  Oops, my fault; I shouldn't drive XEmacs so fast!  ;-)
  I'm fine with using <info> as a container for the <metadata> and
<appinfo> elements.

 >   <!ENTITY lt "&#38;#60;">
 >   <!ENTITY gt "&#62;">
 >   <!ENTITY amp "&#38;#38;">
 >   <!ENTITY apos "&#39;">
 >   <!ENTITY quot "&#34;">
 > What other entities should be included? Or should everything be
 > encoded with &# references.

  Lots of stuff would be reasonable, but this is sufficient given that 
(I expect) most editing will be done by software other than a text

 >   <!ENTITY % SPAMCANS 'bookmark|folder|url|alias|separator'>
 > I would like to suggest the following content models:
 >   xbel     (title?,info?,desc?,(&SPAMCANS;)*
 >   folder   (title?,info?,desc?,(&SPAMCANS;)*
 >   bookmark (url,info?,desc?)

  Ok, this looks good.

 > It's not clear to me why there's only one metadata element
 > allowed. How will metadata be used and how should one choose between
 > metadata and appdata? I would guess that appdata is kinda private to a
 > certain app. And metadata is data that one would like to share with
 > other apps (public) like a list of keywords. If there's only one
 > metadata element should new metadata stuff be appended to it's
 > contents. I believe a minimal XML structure even for metadata is
 > better then just declaring it #PCDATA. 

  Hmm, my initial thought was that <metadata> would be (essentially)
for things that are provided with the document, perhaps the contents
of HTML <meta> and <link> elements, but you bring up a valid point:
why the distinction between the two types of "related" data and why
just one <metadata>.  After taking another (brief) look at the
immediate plans for the Dublin Core and the embedding-in-HTML approach 
those folks are advocating as a first step, I'll revise this stuff a

  <!ELEMENT info (metadata*)>

  <!ELEMENT metadata (meta*)>
  <!ATTLIST metadata
	    id		ID    #IMPLIED
	    scheme	CDATA #IMPLIED
	    lang	CDATA #IMPLIED
  <!ELEMENT meta (#PCDATA)>
  <!ATTLIST meta

  An application that wants its own area to write in can simply use a
private value for the scheme attribute.  I've left the attribute
#IMPLIED instead of #REQUIRED with the presumption that a <metadata>
without a name can be used to stash HTML <meta> elements which don't
specify a scheme attribute.  Alternately, we can simply specify a
scheme for this.
  (Should we register an owner identifier so we can create new FPIs?
I think there's an option to use Internet domain names, so we could be 
"-//IDN python.org//" or something like that.  At least we should make 
a recommendation regarding what a scheme identifier should be (URL,
URN), but I think we still want to be able to assign FPIs to any DTDs
that come out of our efforts.)
  I've attached the complete DTD as found in my emacs buffer below.


Fred L. Drake, Jr.	     <fdrake@acm.org>
Corporation for National Research Initiatives
1895 Preston White Dr.	    Reston, VA  20191

Content-Type: text/xml
Content-Description: Proposed XBEL DTD
Content-Disposition: inline;
Content-Transfer-Encoding: 7bit

<!ENTITY lt "&#38;#60;">
<!ENTITY gt "&#62;">
<!ENTITY amp "&#38;#38;">
<!ENTITY apos "&#39;">
<!ENTITY quot "&#34;">

<!ENTITY % NODES 'bookmark|folder|url|alias|separator'>

<!ELEMENT xbel     (title?, info?, desc?, (%NODES;)*)>
<!ATTLIST xbel
            version CDATA   #FIXED "1.0"

<!ELEMENT title	  (#PCDATA)>

<!--=================== Info blocks ===============================-->

<!ELEMENT info (metadata*)>

<!ELEMENT metadata (meta*)>
<!ATTLIST metadata
	    id		ID    #IMPLIED
	    scheme	CDATA #IMPLIED
	    lang	CDATA #IMPLIED
<!ATTLIST meta

<!--=================== Folder ====================================-->

<!ELEMENT folder   (title?,info?,desc?,(%NODES;)*)>
<!ATTLIST folder
            id	     ID	      #IMPLIED
	    added     CDATA   #IMPLIED
            folded   (yes|no) 'yes'   

<!--=================== URL ======================================-->

<!ELEMENT url        (#PCDATA)>
            id	     ID	      #IMPLIED
	    added    CDATA    #IMPLIED
            href     CDATA    #REQUIRED
            visited  CDATA    #IMPLIED
            modified CDATA    #IMPLIED
            response CDATA    #IMPLIED	-- HTTP response code? --
            checked  CDATA    #IMPLIED

<!--=================== Bookmark ==================================-->

<!-- a wrapper around an url when it has to contain extra info
     like a description and info blocks

<!ELEMENT bookmark (url, info?, desc?)>

<!ELEMENT desc       (#PCDATA)>

<!--=================== Separator =================================-->

<!ELEMENT separator EMPTY>

<!--=================== Alias =====================================-->

<!ATTLIST alias
            ref       IDREF    #REQUIRED