summaryrefslogtreecommitdiff
path: root/main/xml.c
diff options
context:
space:
mode:
authorEliel C. Sardanons <eliels@gmail.com>2009-05-16 20:01:22 +0000
committerEliel C. Sardanons <eliels@gmail.com>2009-05-16 20:01:22 +0000
commit2f996a3ab48899f7ede64028f34d49ce89fc0f48 (patch)
treee4e44b28cc5c02310a85a4e52bffe52daa92c1b0 /main/xml.c
parent766972a3cd8262fb06438c2363a0068472b9b627 (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.c9
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) {