diff --git a/Makefile b/Makefile
index b20e897f6..2469179fc 100644
--- a/Makefile
+++ b/Makefile
@@ -82,7 +82,7 @@ build/news-rss.xml : NOVALID_IGNORE:=true
build/news-rss.xml : VFLAGS_OUT=--noout --schema xsd/rss20.xsd
build/news-atom.xml : STYLE=xsl/atom.xsl
build/news-atom.xml : NOVALID_IGNORE:=true
-build/news-atom.xml : VFLAGS_OUT=--noout --schema xsd/atom031.xsd
+build/news-atom.xml : VFLAGS_OUT=--noout --relaxng xsd/atom.rng
#.INTERMEDIATE: news.xml
news.xml: $(NEWSITEMS)
diff --git a/xsd/atom.rng b/xsd/atom.rng
new file mode 100644
index 000000000..ac63ec4fc
--- /dev/null
+++ b/xsd/atom.rng
@@ -0,0 +1,599 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text
+ html
+
+
+
+
+
+
+
+
+ xhtml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ An atom:feed must have an atom:author unless all of its atom:entry children have an atom:author.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ An atom:entry must have at least one atom:link element with a rel attribute of 'alternate' or an atom:content.
+
+
+ An atom:entry must have an atom:author if its feed does not.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text
+ html
+
+
+
+
+
+
+
+
+
+
+
+
+ xhtml
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1
+ [^:]*
+
+
+
+
+
+ .+/.+
+
+
+
+
+
+ [A-Za-z]{1,8}(-[A-Za-z0-9]{1,8})*
+
+
+
+
+
+
+
+
+
+ .+@.+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ xml:base
+ xml:lang
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/xsd/atom031.xsd b/xsd/atom031.xsd
deleted file mode 100644
index aa9595aaa..000000000
--- a/xsd/atom031.xsd
+++ /dev/null
@@ -1,199 +0,0 @@
-
-
-
-
- This version of the Atom API schema is based on version 0.3 of the Atom API and format specifications,
- found here http://www.ietf.org/internet-drafts/draft-ietf-atompub-protocol-00.txt
- and here http://www.ietf.org/internet-drafts/draft-ietf-atompub-format-00.txt.
-
-
-
-
-
-
- The Atom feed is defined in section 4 of the format spec.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The Atom feed is defined in section 4.13 of the format spec.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The Atom content construct is defined in section 3.1 of the format spec.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The Atom person construct is defined in section 3.2 of the format spec.
-
-
-
-
-
-
-
-
-
-
-
-
- The Atom link construct is defined in section 3.4 of the format spec.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The Atom generator element is defined in section 4.9 of the format spec.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- The Atom date construct is defined in section 3.3 of the format spec.
-
-
-
-
-
-
-
- General description for a version number.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Schema definition for an email address.
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file