[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Subject: Re: DOCBOOK: newbie: partitioning docbook documents
Robert Krüger <krueger@signal7.de> writes: > could someone point me to a tutorial or the part in the documentation that > explains how to partition a document into many files? At the moment I would > like to do two things: > > - put each section of an article into a separate file > - and put code examples that I use as programlistings in a separate file External entities are not easily usable with non-XML data like programlistings. You might want to look into XInclude, a W3C spec for such things. You will need a special XInclude processor for this, however - inclusions are not processed automagically by the parser, as with external entities. IIRC, both libxslt (and its command-line processor xsltproc) and 4xslt from the Python 4Suite package can resolve XIncludes before XSLT-processing. Another possible drawback: I think that you can only include complete XML documents, not "well-balanced" fragments, i.e. they have to have one single root element. > could anyone give me a working example for the two things I describe > above. --- book.xml: <?xml version="1.0"?> <book xmlns:xi="http://www.w3.org/2001/XInclude"> <bookinfo><!-- ... --></bookinfo> <xi:include href="section1.xml"/> </book> --- section1.xml: <section xmlns:xi="http://www.w3.org/2001/XInclude"> <title>Section 1</title> <programlisting> <xi:include href="hello.c" parse="text"/> </programlisting> </section> --- hello.c: #include <stdio.h> int main(int argc, char **argv) { printf("Hello, World!\n"); return 0; } If you run book.xml through an XInclude-Processor (which, as stated above, some XSLT processors can do for you), the following output results: $ xmllint --xinclude book.xml <?xml version="1.0"?> <book xmlns:xi="http://www.w3.org/2001/XInclude"> <bookinfo><!-- ... --></bookinfo> <section xmlns:xi="http://www.w3.org/2001/XInclude"> <title>Section 1</title> <programlisting> #include <stdio.h> int main(int argc, char **argv) { printf("Hello, World!\n"); return 0; } </programlisting> </section> </book> xmllint is included with the libxml library, see <http://xmlsoft.org>. There is a tutorial on XInclude at XML.com: <http://www.xml.com/pub/a/2002/07/31/xinclude.html> The W3C spec is at <http://www.w3.org/TR/xinclude/> hth Henrik
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [Elist Home]
Powered by eList eXpress LLC