Since this file gets changed (and broken) rather often, introduce a
schema file so that the test suite can validate it.
---
docs/news.xml | 2 ++
docs/schemas/news.rng | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++
tests/virschematest.c | 2 ++
3 files changed, 77 insertions(+)
create mode 100644 docs/schemas/news.rng
diff --git a/docs/news.xml b/docs/news.xml
index 024b659e8..c2a2917c1 100644
--- a/docs/news.xml
+++ b/docs/news.xml
@@ -18,6 +18,8 @@
each <section> tag is required to contain at least one <change> tag.
Lines should be kept under 80 columns, and should not exceed 100 columns.
+
+ This file is validated against docs/news.rng schema.
-->
<libvirt>
diff --git a/docs/schemas/news.rng b/docs/schemas/news.rng
new file mode 100644
index 000000000..94a6870c1
--- /dev/null
+++ b/docs/schemas/news.rng
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<grammar
xmlns="http://relaxng.org/ns/structure/1.0"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
+ <start>
+ <ref name="libvirt"/>
+ </start>
+
+ <define name="libvirt">
+ <element name="libvirt">
+ <oneOrMore>
+ <ref name="release"/>
+ </oneOrMore>
+ </element>
+ </define>
+
+ <define name="release">
+ <element name="release">
+ <attribute name="version">
+ <data type="string">
+ <param name="pattern">v[0-9]+\.[0-9]+\.[0-9]+</param>
+ </data>
+ </attribute>
+ <attribute name="date">
+ <data type="string">
+ <param
name="pattern">[0-9]{4}-[0-9]{2}-[0-9]{2}|unreleased</param>
+ </data>
+ </attribute>
+ <oneOrMore>
+ <ref name="section"/>
+ </oneOrMore>
+ </element>
+ </define>
+
+ <define name="section">
+ <element name="section">
+ <attribute name="title">
+ <data type="string"/>
+ </attribute>
+ <oneOrMore>
+ <ref name="change"/>
+ </oneOrMore>
+ </element>
+ </define>
+
+ <define name="change">
+ <element name="change">
+ <element name="summary">
+ <choice>
+ <data type="string">
+ <param name="pattern">\n[^\n]+\n +</param>
+ </data>
+ <empty/>
+ </choice>
+ </element>
+ <optional>
+ <element name="description">
+ <ref name="description"/>
+ </element>
+ </optional>
+ </element>
+ </define>
+
+ <define name="description">
+ <oneOrMore>
+ <choice>
+ <text/>
+ <element name="code">
+ <text/>
+ </element>
+ </choice>
+ </oneOrMore>
+ </define>
+
+</grammar>
diff --git a/tests/virschematest.c b/tests/virschematest.c
index beefabc96..e0e5872db 100644
--- a/tests/virschematest.c
+++ b/tests/virschematest.c
@@ -237,6 +237,8 @@ mymain(void)
DO_TEST("storagevol.rng", "storagevolxml2xmlin",
"storagevolxml2xmlout",
"storagevolschemadata");
+ DO_TEST_FILE("news.rng", "../docs/news.xml");
+
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
--
2.12.1