diff options
author | Eliel C. Sardanons <eliels@gmail.com> | 2009-05-16 20:01:22 +0000 |
---|---|---|
committer | Eliel C. Sardanons <eliels@gmail.com> | 2009-05-16 20:01:22 +0000 |
commit | 2f996a3ab48899f7ede64028f34d49ce89fc0f48 (patch) | |
tree | e4e44b28cc5c02310a85a4e52bffe52daa92c1b0 /main/xml.c | |
parent | 766972a3cd8262fb06438c2363a0068472b9b627 (diff) |
Allow to include sections of other parts of the xml documentation.
Avoid duplicating xml documentation by allowing to include other parts of
the xml documentation using XInclude.
Example:
<xi:include xpointer="xpointer(/docs/function[@name='CHANNEL']/synopsis)" />
(Insert this line to include the synopsis of the CHANNEL function xml
documentation).
It is also possible to include documentation from other files in the
'documentation/' directory using the href="" attribute inside a xinclude
element.
(closes issue #15107)
Reported by: lmadsen
(issue #14444)
Reported by: ewieling
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@194982 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/xml.c')
-rw-r--r-- | main/xml.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/main/xml.c b/main/xml.c index 9a0c66d90..fe00bfbf6 100644 --- a/main/xml.c +++ b/main/xml.c @@ -29,6 +29,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$") #if defined(HAVE_LIBXML2) #include <libxml/parser.h> #include <libxml/tree.h> +#include <libxml/xinclude.h> /* libxml2 ast_xml implementation. */ @@ -55,11 +56,17 @@ struct ast_xml_doc *ast_xml_open(char *filename) } doc = xmlReadFile(filename, NULL, XML_PARSE_RECOVER); + if (doc) { + /* process xinclude elements. */ + if (xmlXIncludeProcess(doc) <= 0) { + xmlFreeDoc(doc); + return NULL; + } + } return (struct ast_xml_doc *) doc; } - void ast_xml_close(struct ast_xml_doc *doc) { if (!doc) { |