<!--
  LinkaGoGo XBEL 1.0 DTD — Extended Bookmark Exchange Language

  This DTD extends the standard XBEL 1.0 format with LinkaGoGo-specific
  attributes for ratings, favorites, aliases, smart bookmarks, RSS feeds,
  reminders, and public folders.

  Standard XBEL 1.0 spec:
    http://pyxml.sourceforge.net/topics/dtds/xbel-1.0.dtd

  Usage:
    <!DOCTYPE xbel PUBLIC
      "+//IDN linkagogo.com//DTD XML Bookmark Exchange Language 1.0//EN"
      "https://www.linkagogo.com/xbel-linkagogo.dtd">
-->

<!-- ================================================================== -->
<!-- Root element                                                       -->
<!-- ================================================================== -->

<!ELEMENT xbel (title?, info?, desc?, (folder | bookmark | separator | alias)*)>
<!ATTLIST xbel
    version  CDATA  #FIXED "1.0"
    id       ID     #IMPLIED
>

<!-- ================================================================== -->
<!-- Standard XBEL elements                                             -->
<!-- ================================================================== -->

<!ELEMENT title (#PCDATA)>

<!ELEMENT desc (#PCDATA)>

<!ELEMENT info (metadata*)>

<!ELEMENT metadata ANY>
<!ATTLIST metadata
    owner    CDATA  #REQUIRED
>

<!ELEMENT separator EMPTY>
<!ATTLIST separator
    id       ID     #IMPLIED
>

<!ELEMENT alias EMPTY>
<!ATTLIST alias
    ref      IDREF  #REQUIRED
>

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

<!ELEMENT folder (title?, info?, desc?, (folder | bookmark | separator | alias)*)>
<!ATTLIST folder
    id       ID     #IMPLIED
    added    CDATA  #IMPLIED
    folded   (yes|no) "yes"
    public   (yes)  #IMPLIED
>
<!--
  public     LinkaGoGo extension. When present with value "yes", the
             folder is shared publicly via a shareable URL.
-->

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

<!ELEMENT bookmark (title?, info?, desc?, keywords?)>
<!ATTLIST bookmark
    id        ID     #IMPLIED
    href      CDATA  #REQUIRED
    added     CDATA  #IMPLIED
    visited   CDATA  #IMPLIED
    visits    CDATA  #IMPLIED
    modified  CDATA  #IMPLIED
    rating    CDATA  #IMPLIED
    favorite  (yes)  #IMPLIED
    alias     CDATA  #IMPLIED
    smart_url CDATA  #IMPLIED
    rss       CDATA  #IMPLIED
    reminder  CDATA  #IMPLIED
>
<!--
  Standard XBEL attributes:
    href       URL of the bookmark (required)
    added      ISO-8601 datetime when the bookmark was created
    visited    ISO-8601 datetime of the last visit
    visits     Integer visit count
    modified   ISO-8601 datetime of last modification

  LinkaGoGo extension attributes:
    rating     Integer 0-5 (0 = no rating)
    favorite   "yes" if the bookmark is a favorite
    alias      Short keyword for quick navigation (max 32 chars)
    smart_url  Parameterized URL with %s placeholder for search queries
    rss        RSS/Atom feed URL associated with the bookmark
    reminder   Reminder schedule. Valid values:

               Frequency       Value             Internal code
               ─────────       ─────             ─────────────
               Every day       "daily"                 0
               Weekly          "monday"               -1
                               "tuesday"              -2
                               "wednesday"            -3
                               "thursday"             -4
                               "friday"               -5
                               "saturday"             -6
                               "sunday"               -7
               Monthly         "1st"                 -11
                               "2nd"                 -12
                               "3rd"                 -13
                               ...                   ...
                               "31st"                -41
               Every N days    "7", "14", "30", etc.   N

               Omit the attribute for no reminder.
-->

<!-- ================================================================== -->
<!-- Keywords — LinkaGoGo extension element                             -->
<!-- ================================================================== -->

<!ELEMENT keywords (#PCDATA)>
<!--
  Space-separated keyword tags. Not part of standard XBEL.
  Example: <keywords>python programming tutorial</keywords>
-->
