2 Copyright (C) 1994-2007 Frans Slothouber, Jacco van Weert, Petteri Kettunen,
3 Bernd Koesling, Thomas Aglassinger, Anthon Pang, Stefan Kost, David Druffner,
4 Sasha Vasko, Kai Hofmann, Thierry Pierron, Friedrich Haase, and Gergely Budai.
6 This file is part of ROBODoc
8 ROBODoc is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or
11 (at your option) any later version.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <http://www.gnu.org/licenses/>.
28 #include "xmldocbook_generator.h"
33 char *RB_XMLDB_Get_Default_Extension(
39 void RB_XMLDB_Generate_String(
44 int l = strlen( a_string );
47 for ( i = 0; i < l; ++i )
50 RB_XMLDB_Generate_Char( dest_doc, c );
54 /* TODO Documentation */
56 void RB_XMLDB_Generate_Label(
61 int l = strlen( name );
64 fprintf( dest_doc, "<anchor id=\"" );
65 for ( i = 0; i < l; ++i )
68 if ( utf8_isalnum( c ) )
70 RB_XMLDB_Generate_Char( dest_doc, c );
76 sprintf( buf, "%02x", c );
77 RB_XMLDB_Generate_Char( dest_doc, buf[0] );
78 RB_XMLDB_Generate_Char( dest_doc, buf[1] );
81 fprintf( dest_doc, "\"/>\n" );
85 /****f* Generator/RB_XMLDB_Generate_Char
87 * RB_XMLDB_Generate_Char
89 * void RB_XMLDB_Generate_Char( FILE * dest_doc, int c )
91 * Switchboard to RB_XMLDB_Generate_Char
95 void RB_XMLDB_Generate_Char(
108 fprintf( dest_doc, "<" );
111 fprintf( dest_doc, ">" );
114 fprintf( dest_doc, "&" );
117 // All others are printed literally
118 fputc( c, dest_doc );
124 void RB_XMLDB_Generate_Header_Start(
126 struct RB_header *cur_header )
128 fprintf( dest_doc, "<section>\n" );
129 /* fprintf( dest_doc, "<section id=\"%s\">\n", cur_header->unique_name ); */
130 fprintf( dest_doc, "<title>\n" );
131 RB_XMLDB_Generate_String( dest_doc, cur_header->name );
132 fprintf( dest_doc, "</title>\n" );
135 void RB_XMLDB_Generate_Header_End(
137 struct RB_header *cur_header )
140 fprintf( dest_doc, "</section>\n" );
143 void RB_XMLDB_Generate_Link(
153 fprintf( dest, "<link linkend=\"%s\">", labelname );
154 RB_XMLDB_Generate_String( dest, linkname );
155 fprintf( dest, "</link>" );
158 void RB_XMLDB_Generate_Doc_Start(
159 struct RB_Document *document,
163 if ( course_of_action.do_headless )
165 /* The user does not want the document head. */
169 fprintf( dest_doc, "<?xml version=\"1.0\" encoding=\"%s\"?>\n",
170 charset ? charset : DEFAULT_CHARSET );
171 if ( document->doctype_name && document->doctype_location )
173 fprintf( dest_doc, "<!DOCTYPE article PUBLIC \"%s\"\n\"%s\">\n",
174 document->doctype_name, document->doctype_location );
175 fprintf( dest_doc, "%s", "<article lang=\"en\">\n" );
179 fprintf( dest_doc, "%s",
180 "<!DOCTYPE article PUBLIC \"-//OASIS//DTD DocBook XML V4.2//EN\" \n"
181 "\"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd\">\n"
182 "<article lang=\"en\">\n" );
185 "<articleinfo>\n <title>%s</title>\n</articleinfo>\n",
186 document_title ? document_title : DEFAULT_DOCTITILE );
191 void RB_XMLDB_Generate_Doc_End(
197 if ( course_of_action.do_footless )
199 /* The user does not want the foot of the
205 fprintf( dest_doc, "%s", "</article>\n" );
210 void RB_XMLDB_Generate_Item_Name(
214 fprintf( dest_doc, "<formalpara><title>" );
215 RB_XMLDB_Generate_String( dest_doc, name );
216 fprintf( dest_doc, "</title><para></para></formalpara>\n" );
219 void RB_XMLDB_Generate_Item_Begin(
227 void RB_XMLDB_Generate_Item_End(
235 void RB_XMLDB_Generate_BeginSection(
242 fprintf( dest_doc, "%s", "<section>\n<title>" );
243 RB_XMLDB_Generate_String( dest_doc, name );
244 fprintf( dest_doc, "%s", "</title>\n" );
247 void RB_XMLDB_Generate_EndSection(
254 fprintf( dest_doc, "%s", "</section>\n" );
258 void RB_XMLDB_Generate_False_Link(
262 RB_XMLDB_Generate_String( dest_doc, name );
267 void XMLDB_Generate_Begin_Paragraph(
270 fprintf( dest_doc, "%s", "<para>\n" );
273 void XMLDB_Generate_End_Paragraph(
276 fprintf( dest_doc, "%s", "</para>\n" );
280 void XMLDB_Generate_Begin_Preformatted(
283 fprintf( dest_doc, "%s", "<literallayout class=\"monospaced\">\n" );
286 void XMLDB_Generate_End_Preformatted(
289 fprintf( dest_doc, "%s", "</literallayout>\n" );
293 void XMLDB_Generate_Begin_List(
296 fprintf( dest_doc, "%s", "<itemizedlist>" );
299 void XMLDB_Generate_End_List(
302 fprintf( dest_doc, "%s", "</itemizedlist>" );
305 void XMLDB_Generate_Begin_List_Item(
308 fprintf( dest_doc, "%s", "<listitem><para>" );
311 void XMLDB_Generate_End_List_Item(
314 fprintf( dest_doc, "%s", "</para></listitem>" );