mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 20:20:07 +00:00
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
This commit is contained in:
2
Makefile
2
Makefile
@@ -497,7 +497,7 @@ doc/core-en_US.xml: $(foreach dir,$(MOD_SUBDIRS),$(shell $(GREP) -l "language=\"
|
|||||||
@echo -n "Building Documentation For: "
|
@echo -n "Building Documentation For: "
|
||||||
@echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > $@
|
@echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" > $@
|
||||||
@echo "<!DOCTYPE docs SYSTEM \"appdocsxml.dtd\">" >> $@
|
@echo "<!DOCTYPE docs SYSTEM \"appdocsxml.dtd\">" >> $@
|
||||||
@echo "<docs>" >> $@
|
@echo "<docs xmlns:xi=\"http://www.w3.org/2001/XInclude\">" >> $@
|
||||||
@for x in $(MOD_SUBDIRS); do \
|
@for x in $(MOD_SUBDIRS); do \
|
||||||
echo -n "$$x " ; \
|
echo -n "$$x " ; \
|
||||||
for i in $$x/*.c; do \
|
for i in $$x/*.c; do \
|
||||||
|
@@ -1,4 +1,15 @@
|
|||||||
<!ELEMENT docs (application|function|agi)* >
|
<!ELEMENT docs (application|function|agi)*>
|
||||||
|
<!ATTLIST docs xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude">
|
||||||
|
|
||||||
|
<!ELEMENT xi:include (xi:fallback?) >
|
||||||
|
<!ATTLIST xi:include
|
||||||
|
xmlns:xi CDATA #FIXED "http://www.w3.org/2001/XInclude"
|
||||||
|
href CDATA #IMPLIED
|
||||||
|
parse (xml|text) "xml"
|
||||||
|
xpointer CDATA #IMPLIED
|
||||||
|
encoding CDATA #IMPLIED
|
||||||
|
accept CDATA #IMPLIED
|
||||||
|
accept-language CDATA #IMPLIED >
|
||||||
|
|
||||||
<!ELEMENT application (synopsis?,syntax?,description?,see-also?)>
|
<!ELEMENT application (synopsis?,syntax?,description?,see-also?)>
|
||||||
<!ATTLIST application name CDATA #REQUIRED>
|
<!ATTLIST application name CDATA #REQUIRED>
|
||||||
@@ -12,19 +23,19 @@
|
|||||||
<!ATTLIST agi name CDATA #REQUIRED>
|
<!ATTLIST agi name CDATA #REQUIRED>
|
||||||
<!ATTLIST agi language CDATA #REQUIRED>
|
<!ATTLIST agi language CDATA #REQUIRED>
|
||||||
|
|
||||||
<!ELEMENT see-also (ref*)>
|
<!ELEMENT see-also (ref|xi:include)*>
|
||||||
|
|
||||||
<!ELEMENT ref (#PCDATA)*>
|
<!ELEMENT ref (#PCDATA)>
|
||||||
<!ATTLIST ref type (application|function|astcli|link|manpage|filename|agi) #REQUIRED>
|
<!ATTLIST ref type (application|function|astcli|link|manpage|filename|agi) #REQUIRED>
|
||||||
|
|
||||||
<!ELEMENT synopsis (#PCDATA)>
|
<!ELEMENT synopsis (#PCDATA)>
|
||||||
|
|
||||||
<!ELEMENT syntax (parameter*)>
|
<!ELEMENT syntax (parameter|xi:include)*>
|
||||||
<!ATTLIST syntax argsep CDATA ",">
|
<!ATTLIST syntax argsep CDATA ",">
|
||||||
|
|
||||||
<!ELEMENT description (para|note|warning|variablelist|enumlist)*>
|
<!ELEMENT description (para|note|warning|variablelist|enumlist|xi:include)*>
|
||||||
|
|
||||||
<!ELEMENT parameter (optionlist|enumlist|argument|para|note|warning|parameter)*>
|
<!ELEMENT parameter (optionlist|enumlist|argument|para|note|warning|parameter|xi:include)*>
|
||||||
<!ATTLIST parameter name CDATA "">
|
<!ATTLIST parameter name CDATA "">
|
||||||
<!ATTLIST parameter required (yes|no|true|false) "false">
|
<!ATTLIST parameter required (yes|no|true|false) "false">
|
||||||
<!ATTLIST parameter multiple (yes|no|true|false) "false">
|
<!ATTLIST parameter multiple (yes|no|true|false) "false">
|
||||||
@@ -34,24 +45,24 @@
|
|||||||
<!ATTLIST parameter argsep CDATA ",">
|
<!ATTLIST parameter argsep CDATA ",">
|
||||||
|
|
||||||
<!ELEMENT optionlist (option+)>
|
<!ELEMENT optionlist (option+)>
|
||||||
<!ELEMENT option (argument|para|note|warning|variablelist|enumlist)*>
|
<!ELEMENT option (argument|para|note|warning|variablelist|enumlist|xi:include)*>
|
||||||
<!ATTLIST option name CDATA #REQUIRED>
|
<!ATTLIST option name CDATA #REQUIRED>
|
||||||
<!ATTLIST option argsep CDATA ",">
|
<!ATTLIST option argsep CDATA ",">
|
||||||
<!ATTLIST option implies CDATA "">
|
<!ATTLIST option implies CDATA "">
|
||||||
<!ATTLIST option hasparams CDATA "">
|
<!ATTLIST option hasparams CDATA "">
|
||||||
|
|
||||||
<!ELEMENT enumlist (enum+)>
|
<!ELEMENT enumlist (enum+)>
|
||||||
<!ELEMENT enum (para|note|warning|parameter|enumlist)*>
|
<!ELEMENT enum (para|note|warning|parameter|enumlist|xi:include)*>
|
||||||
<!ATTLIST enum name CDATA "">
|
<!ATTLIST enum name CDATA "">
|
||||||
|
|
||||||
<!ELEMENT argument (para|note|warning|variablelist|argument)*>
|
<!ELEMENT argument (para|note|warning|variablelist|argument|xi:include)*>
|
||||||
<!ATTLIST argument name CDATA #REQUIRED>
|
<!ATTLIST argument name CDATA #REQUIRED>
|
||||||
<!ATTLIST argument multiple (yes|no|true|false) "false">
|
<!ATTLIST argument multiple (yes|no|true|false) "false">
|
||||||
<!ATTLIST argument required (yes|no|true|false) "false">
|
<!ATTLIST argument required (yes|no|true|false) "false">
|
||||||
<!ATTLIST argument hasparams (yes|no|true|false|optional) "false">
|
<!ATTLIST argument hasparams (yes|no|true|false|optional) "false">
|
||||||
<!ATTLIST argument argsep CDATA ",">
|
<!ATTLIST argument argsep CDATA ",">
|
||||||
|
|
||||||
<!ELEMENT para (#PCDATA|astcli|literal|emphasis|filename|directory|replaceable|variable)*>
|
<!ELEMENT para (#PCDATA|astcli|literal|emphasis|filename|directory|replaceable|variable|xi:include)*>
|
||||||
<!ELEMENT literal (#PCDATA)>
|
<!ELEMENT literal (#PCDATA)>
|
||||||
<!ELEMENT emphasis (#PCDATA)>
|
<!ELEMENT emphasis (#PCDATA)>
|
||||||
<!ELEMENT filename (#PCDATA)>
|
<!ELEMENT filename (#PCDATA)>
|
||||||
@@ -59,11 +70,11 @@
|
|||||||
<!ELEMENT directory (#PCDATA)>
|
<!ELEMENT directory (#PCDATA)>
|
||||||
<!ELEMENT astcli (#PCDATA)>
|
<!ELEMENT astcli (#PCDATA)>
|
||||||
|
|
||||||
<!ELEMENT note (para+)>
|
<!ELEMENT note (para+|xi:include*)>
|
||||||
<!ELEMENT warning (para+)>
|
<!ELEMENT warning (para+|xi:include*)>
|
||||||
|
|
||||||
<!ELEMENT variablelist (variable+)>
|
<!ELEMENT variablelist (variable+|xi:include*)>
|
||||||
<!ELEMENT variable (#PCDATA|value|para)*>
|
<!ELEMENT variable (#PCDATA|value|para|xi:include)*>
|
||||||
<!ATTLIST variable name CDATA "">
|
<!ATTLIST variable name CDATA "">
|
||||||
|
|
||||||
<!ELEMENT value (#PCDATA)>
|
<!ELEMENT value (#PCDATA)>
|
||||||
|
@@ -29,6 +29,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
|
|||||||
#if defined(HAVE_LIBXML2)
|
#if defined(HAVE_LIBXML2)
|
||||||
#include <libxml/parser.h>
|
#include <libxml/parser.h>
|
||||||
#include <libxml/tree.h>
|
#include <libxml/tree.h>
|
||||||
|
#include <libxml/xinclude.h>
|
||||||
/* libxml2 ast_xml implementation. */
|
/* libxml2 ast_xml implementation. */
|
||||||
|
|
||||||
|
|
||||||
@@ -55,11 +56,17 @@ struct ast_xml_doc *ast_xml_open(char *filename)
|
|||||||
}
|
}
|
||||||
|
|
||||||
doc = xmlReadFile(filename, NULL, XML_PARSE_RECOVER);
|
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;
|
return (struct ast_xml_doc *) doc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ast_xml_close(struct ast_xml_doc *doc)
|
void ast_xml_close(struct ast_xml_doc *doc)
|
||||||
{
|
{
|
||||||
if (!doc) {
|
if (!doc) {
|
||||||
|
Reference in New Issue
Block a user