Pro vkládání zdrojových kódů používáme především blokový element programlisting
, do kterého
výpis kódu uzavřeme. Pokud kód obsahuje „nebezpečné znaky“, uzavřeme jej
navíc do sekce CDATA. Ta, jak již víme z XML, zajistí že
procesor nebude data v ní obsažená parsovat.
Pokud chceme u zdrojového kódu titulek s popisem, je vhodné jej celý obalit
elementem example
.
<example> <title>Hello World!</title> <programlisting> <![CDATA[ #include <stdout> using namespace std; int main(int argc, char *argv) { cout<<"Hello world"<<endl; } ]]> </programlisting> </example>
vygeneruje
Příklad 10.1. Hello World!
#include <stdout> using namespace std; int main(int argc, char *argv) { cout<<"Hello world"<<endl; }
Zdrojový kód však můžeme i načítat z externího souboru. S úspěchem k tomu lze použít zmíněnou
technologii XInclude. Při vkládání však musíme navíc uvést atribut
parse="text"
, aby byl jeho obsah interpretován jako prostý text. Tím dojde k převedení
speciálních znaků (&, >, <, ") na příslušné entity.
<example> <title>Hello World!</title> <programlisting> <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="source/hello.c" parse="text"/> </programlisting> </example>
Druhou možností výpisů zdrojových kódů jsou tzv. komentované výpisy. Ty
vytvoříme spojením programlistings
se seznamem calloutlist
. Ve výpisu kódu označíme řádky, které budou
komentovány elementem co
, obsahujícím identifikátor.
<example> <title>Hello World.</title> <programlisting> <![CDATA[ #include <stdout> using namespace std; <co id="co.namespace"/> int main(int argc, char *argv) { cout<<"Hello world"<<endl; <co id="co.stream"/> } ]]> </programlisting> <calloutlist> <callout arearefs="co.namespace"> <para>Jmenný prostor.</para> </callout> <callout arearefs="co.stream"> <para>Standardní proud.</para> </callout> </calloutlist> </example>
vygeneruje
Příklad 10.2. Hello World.
#include <stdout> using namespace std;int main(int argc, char *argv) { cout<<"Hello world"<<endl;
}
Odkazy na příslušné řádky jsou buď řešeny jako textové položky, nebo jako malé obrázky.
Standardně se doplňují obrázky, které můžeme získat např. z HTML verze knihy [Sta-05]
z adresáře obrazky/callouts
.
Pokud chceme mít položky v textové podobě, stačí v XSL nastavit parametr
callout.graphics
na hodnotu 0
<xsl:param name="callout.graphics" select="0"/>