From 750e0b6ba6c352471f7d1f584dc6ac6ddc6d6337 Mon Sep 17 00:00:00 2001 From: Petter Reinholdtsen Date: Sat, 3 Oct 2015 00:58:31 +0200 Subject: [PATCH] Add script to check indexterm ranges. --- scripts/verify-indexterm-range | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100755 scripts/verify-indexterm-range diff --git a/scripts/verify-indexterm-range b/scripts/verify-indexterm-range new file mode 100755 index 0000000..19a31a1 --- /dev/null +++ b/scripts/verify-indexterm-range @@ -0,0 +1,31 @@ +#!/usr/bin/python +# +# Verify the ranges of a docbook document, ensuring +# endofrange come after startofrange, and the IDs used by startofrange +# are unique. + +from lxml import etree +def main(): + filename = 'freeculture.xml' + doc = etree.parse(filename) + ids = {} + order = 0 + for it in doc.getroot().xpath('//indexterm'): + order = order + 1 + indextermclass = None + id = None + if 'class' in it.attrib: + indextermclass = it.attrib['class'] + if 'startofrange' == indextermclass: + id=it.attrib['id'] + if id in ids: + print "error: non-unique indexterm id: %s" % id + ids[id] = order + if 'endofrange' == indextermclass: + id = it.attrib['startref'] + if id not in ids: + print "error: indexterm id=\"%s\" not listed before endofrange" % id + print indextermclass, id + +if __name__ == "main": + main() -- 2.47.2