specs.txt - sfeed_tests - sfeed tests and RSS and Atom files
 (HTM) git clone git://git.codemadness.org/sfeed_tests
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       specs.txt (3873B)
       ---
            1 Links to specs
            2 --------------
            3 
            4 - Atom
            5         https://datatracker.ietf.org/doc/html/rfc4287
            6 
            7 - RSS 0.9, 2.0 and 1.0
            8         https://www.rssboard.org/rss-specification
            9 
           10 - Dublin Core and RDF
           11         https://www.dublincore.org/specifications/dublin-core/dcmi-terms/
           12         https://web.resource.org/rss/1.0/modules/dc/
           13 
           14 - Media RSS (MRSS)
           15         https://www.rssboard.org/media-rss
           16 
           17 - OPML
           18         https://en.wikipedia.org/wiki/OPML
           19         http://opml.org/
           20 
           21 
           22 Time formats:
           23 
           24 - RFC3339 Date and Time on the Internet: Timestamps:
           25         https://www.rfc-editor.org/rfc/rfc3339
           26 
           27 - RFC822:
           28         https://www.rfc-editor.org/rfc/rfc822
           29         5. Date and Time Specification
           30 
           31 - RFC822 obsoleted by RFC2822:
           32         https://www.rfc-editor.org/rfc/rfc2822
           33 
           34 - ISO 8601-1:
           35         https://en.wikipedia.org/wiki/ISO_8601
           36         There might be some free and open resource someplace...
           37         https://archive.org/details/iso-tc154-wg5_n0038_iso_wd_8601-1_2016-02-16
           38 
           39 
           40 Some notes about specs
           41 ----------------------
           42 
           43 - ISO 8601-1 needs to be bought to see it. It is not free as in cost.
           44 
           45 - RFC822 incorrectly defined military timezones. Mentioned in its succesor RFC2822:
           46 " The 1 character military time zones were defined in a non-standard
           47    way in [RFC822] and are therefore unpredictable in their meaning.
           48    The original definitions of the military zones "A" through "I" are
           49    equivalent to "+0100" through "+0900" respectively; "K", "L", and "M"
           50    are equivalent to  "+1000", "+1100", and "+1200" respectively; "N"
           51    through "Y" are equivalent to "-0100" through "-1200" respectively;
           52    and "Z" is equivalent to "+0000".  However, because of the error in
           53    [RFC822], they SHOULD all be considered equivalent to "-0000" unless
           54    there is out-of-band information confirming their meaning."
           55 
           56   sfeed does not support military timezones anymore. I haven't noticed any
           57   feeds that use them (apart from Z) anyway.
           58 
           59 - RFC822 only defines American timezone names (so "CEST" is not supported).
           60 
           61 - RFC2822 defines leap seconds are allowed (23:59:60).
           62 
           63 - Second fractions are allowed. sfeed truncates them.
           64 
           65 - Timezones can be in the range: -9959 through +9959. sfeed allows -9999 through -9999.
           66 
           67 - time_t is typically signed 64-bit on platforms. POSIX defines it simply as an
           68   integer (not clear if signed or unsigned).
           69 
           70   Many 32-bit platforms use a signed 32-bit long for time_t.
           71   Open Watcom uses a 32-bit unsigned long for time_t.
           72   "long long" is a datatype defines as at least 64-bit.
           73   The sfeed parser consistently parses it to a signed 64-bit number (long long).
           74 
           75   The format tools read this number and convert it to a time_t. Depending on
           76   the platform and the time (mostly before 1970 or after 2038) this may
           77   incorrectly wrap the number.
           78 
           79 - There were/are many bugs in time parsing implementations in the different
           80   libcs in various platforms sfeed has a parser for most of the formats used by
           81   RSS/Atom/etc and handles timezone offsets.
           82 
           83 - Lowercase or uppercase 't' separator and 'z' timezone:
           84   
           85   The Atom Syndication Format RFC4287 references RFC3339 for timestamp but imposes/overrides
           86   a stricter format.
           87   
           88   For example strictly speaking timezone format separated should be with uppercase:
           89   
           90   Allowed in RFC3339, but not for timestamps in Atom feeds, 't' and 'z' must be uppercase:
           91   
           92           <updated>2003-12-13t18:30:02z</updated>
           93   
           94   Correct:
           95   
           96           <updated>2003-12-13T18:30:02Z</updated>
           97   
           98   See RFC4287 section 3.3.  Date Constructs:
           99   
          100     "
          101      A Date construct is an element whose content MUST conform to the
          102      "date-time" production in [RFC3339].  In addition, an uppercase "T"
          103      character MUST be used to separate date and time, and an uppercase
          104      "Z" character MUST be present in the absence of a numeric time zone
          105      offset."
          106   
          107   
          108   See RFC3339 5.6. Internet Date/Time Format:
          109   
          110      "NOTE: Per [ABNF] and ISO8601, the "T" and "Z" characters in this
          111       syntax may alternatively be lower case "t" or "z" respectively."
          112   
          113