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