<?xml version="1.0" encoding="UTF-8" ?>

<chapter id="extending-quanta-3-2">
<chapterinfo>
<title
>Utöka &quantaplus;</title>
<authorgroup>
<author
><firstname
>Christopher</firstname
> <surname
>Hornbaker</surname
> <affiliation
> <address
><email
>chrishornbaker@earthlink.net</email
></address>
</affiliation>
</author>

<othercredit role="translator"
><firstname
>Stefan</firstname
><surname
>Asserhäll</surname
><affiliation
><address
><email
>stefan.asserhall@comhem.se</email
></address
></affiliation
><contrib
>Översättare</contrib
></othercredit
> 

</authorgroup>
</chapterinfo>

<title
>Utöka &quantaplus;</title>

<para
>Det här kapitlet beskriver hur &quantaplus; kan anpassas till just dina behov, och hur du kan hjälpa till att göra &quantaplus; bättre. </para>

<!--<sect1 id="kommander-3-2">
<title
>Using Kommander With &quantaplus;</title>

<para>
Kommander, by Marc Britton.
</para>
</sect1
> -->

<sect1 id="dtep-intro-3-2">
<title
>Dokumenttyp-redigeringspaket (&DTEP;)</title>

<para
>Dokumenttyp-redigeringspaket (&DTEP;) används i &quantaplus; för att lägga till stöd för taggar, skriptspråk och stilmallar. De tillåter &quantaplus; att tillhandahålla funktioner som automatisk komplettering och nodträd. Deras enkelhet och flexibilitet är vad som gör &quantaplus; en snabb, utvecklarvänlig integrerad uvecklingsmiljö för webbutvecklare. De gör &quantaplus; till en lättanvänd, produktiv miljö. </para>

<para
>Det finns två varianter av &DTEP;, familj 1, som är taggar, och familj 2 som är skriptspråk och stilmallar. En &DTEP; består av två delar, taggkatalogen och verktygsraderna. Taggkataloger består av två filtyper, filerna description.rc och XML-taggar, som har ändelsen .tag. Verktygsrader är bekväma, ikonorienterade rader med knappar (ovanför redigeringsfönstret), som lägger till text i ett dokument snabbare än användaren kan skriva. </para>

<para
>Det här dokumentet beskriver hur XML-taggfiler, filen description.rc och verktygsrader skapas. I korthet, en &DTEP;. </para>

<para
>XML-taggfiler (.tag) definerar både egenskaper specifika för en tagg, samt layout och innehåll i egenskapsdialogrutan som &quantaplus; visar för taggen. Filen  description.rc tillhandahåller regler och information om en hel &DTEP;. Verktygsrader tillhandahåller ett snabbt sätt att lägga till taggar i ett dokument, utan att behöva bekymra sig om felstavningar eller liknande. </para>

<sect2 id="dtep-packaging-3-2">
<title
>Paketering</title>

<para
>Taggkataloger är just det, kataloger. De består bara av filerna description.rc och XML-taggfiler. Taggkatalogerna bär taggspråkets namn och version, om det finns någon (till exempel html-4.01-strict). </para>
</sect2>

<sect2 id="tagxml-3-2">
<title
>XML-taggar</title>

<para
>Tabellen nedan listar elementen som definieras i XML-taggfiler, och anger om de krävs eller inte. Även om inte alla krävs, rekommenderas du att använda så många som du kan, så att andra användare får en bättre erfarenhet och mer information att arbeta med. </para>

<informaltable>
<tgroup cols="3">
<thead>
<row>
<entry
>Element</entry>
<entry
>Normal användning</entry>
<entry
>Användningsområde</entry>
</row>
</thead>
<tbody>
<row>
<entry
>TAGS</entry>
<entry
>krävs</entry>
<entry
>alltid</entry>
</row>
<row>
<entry
>tag</entry>
<entry
>krävs</entry>
<entry
>alltid</entry>
</row>
<row>
<entry
>label</entry>
<entry
>valfri</entry>
<entry
>krävs för att skapa en egenskapsdialogruta</entry>
</row>
<row>
<entry
>attr</entry>
<entry
>valfri</entry>
<entry
>krävs för att definiera en egenskap</entry>
</row>
<row>
<entry
>tooltip</entry>
<entry
>valfri</entry>
<entry
>krävs för att låta egenskapsdialogrutan visa ett verktygstips</entry>
</row>
<row>
<entry
>whatsthis</entry>
<entry
>valfri</entry>
<entry
>krävs för att låta egenskapsdialogrutan visa <quote
>Vad är det här</quote
></entry>
</row>
<row>
<entry
>list</entry>
<entry
>valfri</entry>
<entry
>krävs när en egenskap har typen <quote
>list</quote
></entry>
</row>
<row>
<entry
>item</entry>
<entry
>valfri</entry>
<entry
>krävs när &lt;list&gt; används</entry>
</row>
<row>
<entry
>textlocation</entry>
<entry
>valfri</entry>
<entry
>alltid</entry>
</row>
<row>
<entry
>location</entry>
<entry
>valfri</entry>
<entry
>krävs när label används</entry>
</row>
<row>
<entry
>text</entry>
<entry
>valfri</entry>
<entry
>krävs när label används</entry>
</row>
<row>
<entry
>children</entry>
<entry
>valfri</entry>
<entry
>lista över taggar som kan finnas i taggen som definieras</entry>
</row>
<row>
<entry
>child</entry>
<entry
>krävs</entry>
<entry
>en av posterna i children</entry>
</row>
<row>
<entry
>stoppingtags</entry>
<entry
>valfri</entry>
<entry
>lista över taggar som talar om för en annan tag att den har nått slutet</entry>
</row>
<row>
<entry
>stoppingtag</entry>
<entry
>krävs</entry>
<entry
>en av posterna i stoppingtags</entry>
</row>
</tbody>
</tgroup>
</informaltable>


<sect3 id="dtep-element-descriptions-3-2">
<title
>Elementbeskrivningar för XML-taggar</title>

<para
>Följande avsnitt beskriver varje element i detalj. Alltfrån var de kan finnas, till vad som finns i dem presenteras på ett sätt som är enkelt att följa. </para>

<sect4 id="TAGS-3-2">
<title
>TAGS</title>

<para
>Det här är XML-taggdokumentets rotelement. Det får bara finnas en gång i ett dokument. Det kan innehålla definitionen av flera taggar. Det här är ett typelement med bara element. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry>
<entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
><emphasis
>INGEN</emphasis
></entry>
<entry
>tag</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="tag-3-2">
<title
>tag</title>

<para
>Omgivning för taggen som definieras. Det här är ett typelement med bara element. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry>
<entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>TAGS</entry>
<entry
>label, attr, stoppingtags</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<informaltable>
<tgroup cols="6">
<thead>
<row>
<entry
>Egenskap</entry
><entry
>Typ</entry
><entry
>Värden</entry>
<entry
>Standard</entry
><entry
>Användning</entry
><entry
>Beskrivning</entry>
</row>
</thead>
<tbody>
<row>
<entry
>namn</entry
><entry
>sträng</entry
><entry
></entry
><entry
></entry>
<entry
>krävs</entry
><entry
>Anger namnet på taggen som håller på att definieras.</entry>
</row>
<row>
<entry
>single</entry
><entry
>Boolean</entry
><entry
></entry
><entry
></entry>
<entry
>valfri</entry
><entry
>Anger om taggen kräver en avslutande tagg &lt;/(taggnamn)&gt;.</entry>
</row>
<row>
<entry
>type</entry
><entry
>sträng</entry
><entry
></entry
><entry
>xmltag</entry>
<entry
>valfri</entry
><entry
>Anger typ för taggen som definieras.</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>xmltag</entry
><entry
></entry>
<entry
></entry
><entry
>Typen för taggen är XML-baserad (bara familj 1).</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>egenskap</entry
><entry
></entry>
<entry
></entry
><entry
>Typen för taggen är stilmallsrelaterad (bara familj 2).</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>funktion</entry
><entry
></entry>
<entry
></entry
><entry
>Typen för taggen är en skriptfunktion. När det används blir &lt;attr&gt; funktionens argument (bara familj 2).</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>klass</entry
><entry
></entry>
<entry
></entry
><entry
>Typen för taggen är en skriptklass (bara familj 2).</entry>
</row>
<row>
<entry
>returnType</entry
><entry
>sträng</entry
><entry
></entry
><entry
>void </entry>
<entry
>valfri</entry
><entry
>Anger returtypen för taggen som definieras (bara familj 2).</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>void</entry
><entry
></entry>
<entry
></entry
><entry
>Taggtypen returnerar ingenting.</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>int</entry
><entry
></entry>
<entry
></entry
><entry
>Taggtypen returnerar ett heltal.</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>float</entry
><entry
></entry>
<entry
></entry
><entry
>Taggtypen returnerar ett flyttal.</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>long</entry
><entry
></entry>
<entry
></entry
><entry
>Taggtypen returnerar ett långt heltal.</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>sträng</entry
><entry
></entry>
<entry
></entry
><entry
>Taggtypen returnerar en sträng.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="label-3-2">
<title
>label</title>

<para
>Placera en rubrik i dialogrutan. Texten anges av taggen &lt;text&gt;. Det här är ett typelement med bara element. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry>
<entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>tag</entry>
<entry
>text, location</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="attr-3-2">
<title
>attr</title>

<para
>Definierar en egenskap för taggen. Elementet upprepas en gång för varje egenskap. Det definierar egenskapens namn och typ. Det innehåller också ytterligare taggar som anger hur egenskapen ska visas, etc. Det här är ett typelement med bara element. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry>
<entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>tag</entry>
<entry
>location, list, tooltip, whatsthis, textlocation</entry>
</row>
</tbody>
</tgroup>
</informaltable>

<informaltable>
<tgroup cols="6">
<thead>
<row>
<entry
>Egenskap</entry
><entry
>Typ</entry
><entry
>Värden</entry>
<entry
>Standard</entry
><entry
>Användning</entry
><entry
>Beskrivning</entry>
</row>
</thead>
<tbody>
<row>
<entry
>namn</entry
><entry
>sträng</entry
><entry
></entry
><entry
></entry>
<entry
>krävs</entry
><entry
>Anger namnet på egenskapen som håller på att definieras.</entry>
</row>
<row>
<entry
>type</entry
><entry
>sträng</entry
><entry
></entry
><entry
>input</entry>
<entry
>krävs</entry
><entry
>Anger typen för egenskapen som håller på att definieras.</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>input</entry
><entry
></entry>
<entry
></entry
><entry
>Fältet stöder fri textinmatning (textfält).</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>check</entry
><entry
></entry>
<entry
></entry
><entry
>Fältets värde är booleskt (kryssruta).</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>färg</entry
><entry
></entry>
<entry
></entry
><entry
>Fältets värde är en färg.</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>webbadress</entry
><entry
></entry>
<entry
></entry
><entry
>Fältets värde är en webbadress (lokal fil att hänvisa till).</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>list</entry
><entry
></entry>
<entry
></entry
><entry
>Fältets värde kommer från en angiven lista.</entry>
</row>
<row>
<entry
>status</entry
><entry
>sträng</entry
><entry
></entry
><entry
>valfri</entry>
<entry
>krävs</entry
><entry
>Anger om argumentet krävs eller inte (bara familj 2).</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>valfri</entry
><entry
></entry>
<entry
></entry
><entry
>Argumentet krävs inte.</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>krävs</entry
><entry
></entry>
<entry
></entry
><entry
>Argumentet krävs.</entry>
</row>
<row>
<entry
></entry
><entry
></entry
><entry
>underförstått</entry
><entry
></entry>
<entry
></entry
><entry
>Argumentet är underförstått.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="tooltip-3-2">
<title
>tooltip</title>

<para
>Definierar verktygstipset för ett fält i dialogrutan. Elementet är bara text. </para>

<note>
<para
>För närvarande stöds bara vanlig text (du kan inte använda några taggar). </para>
</note>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry>
<entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>attr</entry>
<entry
><emphasis
>INGEN</emphasis
></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="whatsthis-3-2">
<title
>whatsthis</title>

<para
>Definierar 'Vad är det här'-hjälp för ett fält i dialogrutan. Elementet är bara text. </para>

<note>
<para
>För närvarande stöds bara vanlig text (du kan inte använda några taggar). </para>
</note>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry>
<entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>attr</entry>
<entry
><emphasis
>INGEN</emphasis
></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="list-3-2">
<title
>list</title>

<para
>En omgivande tagg som grupperar objekt i en lista tillsammans. Den kan bara finnas en gång för varje beskrivning av en egenskap. Det här är ett typelement med bara element. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry>
<entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>attr</entry>
<entry
>item</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="item-3-2">
<title
>item</title>

<para
>Definierar ett objekt i en lista. Elementet är bara text. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry>
<entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>list</entry>
<entry
><emphasis
>INGEN</emphasis
></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="textlocation-3-2">
<title
>textlocation</title>

<para
>Anger position för en taggs egenskapstext inne i en dialogruta. Taggen kan bara finnas en gång för varje egenskap i dialogrutan (dvs en gång för varje tagg &lt;attr&gt;). Det här elementet är tomt. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry>
<entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>attr</entry>
<entry
><emphasis
>INGEN</emphasis
></entry>
</row>
</tbody>
</tgroup>
</informaltable>

<informaltable>
<tgroup cols="4">
<thead>
<row>
<entry
>Egenskap</entry
><entry
>Typ</entry>
<entry
>Användning</entry
><entry
>Beskrivning</entry>
</row>
</thead>
<tbody>
<row>
<entry
>row</entry
><entry
>positivt heltal</entry>
<entry
>krävs</entry
><entry
>Anger raden i dialogrutans layout för ett fält eller en rubrik.</entry>
</row>
<row>
<entry
>col</entry
><entry
>positivt heltal</entry>
<entry
>krävs</entry
><entry
>Anger kolumnen i dialogrutans layout för ett fält eller en rubrik.</entry>
</row>
<row>
<entry
>rowspan</entry
><entry
>positivt heltal</entry>
<entry
>valfri</entry
><entry
>Anger antal rader som ett fält ska uppta.</entry>
</row>
<row>
<entry
>colspan</entry
><entry
>positivt heltal</entry>
<entry
>valfri</entry
><entry
>Anger antal kolumner som ett fält ska uppta.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="location-3-2">
<title
>location</title>

<para
>Anger position och storlek på ett fält i dialogrutan. Taggen ska finnas en gång för varje fält i dialogrutan (dvs en gång för varje tagg &lt;attr&gt; och &lt;label&gt;). Det här elementet är tomt. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry
><entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>label, attr</entry
><entry
><emphasis
>INGEN</emphasis
></entry>
</row>
</tbody>
</tgroup>
</informaltable>

<informaltable>
<tgroup cols="4">
<thead>
<row>
<entry
>Egenskap</entry
><entry
>Typ</entry>
<entry
>Användning</entry
><entry
>Beskrivning</entry>
</row>
</thead>
<tbody>
<row>
<entry
>row</entry
><entry
>positivt heltal</entry>
<entry
>krävs</entry
><entry
>Anger raden i dialogrutans layout för ett fält eller en rubrik.</entry>
</row>
<row>
<entry
>col</entry
><entry
>positivt heltal</entry>
<entry
>krävs</entry
><entry
>Anger kolumnen i dialogrutans layout för ett fält eller en rubrik.</entry>
</row>
<row>
<entry
>rowspan</entry
><entry
>positivt heltal</entry>
<entry
>valfri</entry
><entry
>Anger antal rader som ett fält ska uppta.</entry>
</row>
<row>
<entry
>colspan</entry
><entry
>positivt heltal</entry>
<entry
>valfri</entry
><entry
>Anger antal kolumner som ett fält ska uppta.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="text-3-2">
<title
>text</title>

<para
>Definierar texten för en rubrik eller kryssruta. Elementet är bara text. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry
><entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>label, attr</entry
><entry
><emphasis
>INGEN</emphasis
></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="children-3-2">
<title
>children</title>

<para
>Definierar en lista med element som kan finnas i taggen som anges. Det här är ett typelement med bara element. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry
><entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>tag</entry
><entry
>child</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="child-3-2">
<title
>child</title>

<para
>Definierar en underliggande tagg. Det här elementet är tomt. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry
><entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>children</entry
><entry
><emphasis
>INGEN</emphasis
></entry>
</row>
</tbody>
</tgroup>
</informaltable>

<informaltable>
<tgroup cols="4">
<thead>
<row>
<entry
>Egenskap</entry
><entry
>Typ</entry>
<entry
>Användning</entry
><entry
>Beskrivning</entry>
</row>
</thead>
<tbody>
<row>
<entry
>namn</entry
><entry
>sträng</entry>
<entry
>krävs</entry
><entry
>Anger en tagg som kan finnas i en viss tagg.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="stoppingtags-3-2">
<title
>stoppingtags</title>

<para
>Definierar en lista med element som tvingar en tagg att sluta. Det här är ett typelement med bara element. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry
><entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>tag</entry
><entry
>stoppingtag</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>

<sect4 id="stoppingtag-3-2">
<title
>stoppingtag</title>

<para
>Definierar en sluttagg. Det här elementet är tomt. </para>

<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry
>Överliggande</entry
><entry
>Underliggande</entry>
</row>
</thead>
<tbody>
<row>
<entry
>stoppingtags</entry
><entry
><emphasis
>INGEN</emphasis
></entry>
</row>
</tbody>
</tgroup>
</informaltable>

<informaltable>
<tgroup cols="4">
<thead>
<row>
<entry
>Egenskap</entry
><entry
>Typ</entry>
<entry
>Användning</entry
><entry
>Beskrivning</entry>
</row>
</thead>
<tbody>
<row>
<entry
>namn</entry
><entry
>sträng</entry>
<entry
>krävs</entry
><entry
>Anger vilka taggar som tvingar en annan tagg att sluta.</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</sect4>
</sect3>

<sect3 id="tagxml-usage-3-2">
<title
>Användning av XML-taggar</title>

<para
>Alla XML-taggfiler måste börja med &XML;-deklarationen: &lt;?xml version="1.0" encoding="UTF-8"?&gt; och måste vara hierarkiskt korrekta och avslutade. </para>

<important>
<para
>Mellanslag påverkar ingenting negativt, men se upp med tecknen &amp; och &lt;. Dessa ska troligen ersättas med &amp;amp; och &amp;lt; i element som &lt;tooltip&gt;, &lt;whatsthis&gt;, och &lt;text&gt;. Att inte göra det orsakar ingen krasch, men du får delar av ditt arbete att försvinna om du inte gör det. </para>
</important>
</sect3>

<sect3 id="tagxml-validation-3-2">
<title
>Validering av XML-taggar</title>

<para
>För att validera XML-taggfiler, klicka helt enkelt på dialogrutan <quote
>Verktyg</quote
> längst upp i &quantaplus; och välj <quote
>Validera XML-taggar</quote
>. En dialogruta visas, och du behöver bara följa de enkla anvisningarna. </para>

<note>
<para
>Den här funktionen finns inte för närvarande. För tillfället sker validering när XML-taggfilerna laddas i &quantaplus;. </para>
</note>
</sect3>

<sect3 id="tagxml-examples-3-2">
<title
>Exempel på XML-taggar</title>

<sect4 id="family-one-3-2">
<title
>Familj 1</title>

<para
>Följande visar dig en korrekt familj 1 XML-taggfil. Filen råkar beskriva &W3C; &XML; Schemas element &lt;schema&gt;. Filnamnet på den här XML-taggfilen skulle vara schema.tag. Enkelt, inte sant? </para>

<informalexample>
<literallayout
><markup>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE TAGS&gt;
&lt;TAGS&gt;
 &lt;tag name="schema"&gt;
  &lt;label&gt;
   &lt;text&gt;id&lt;/text&gt;
   &lt;location col="0" row="0"/&gt;
  &lt;/label&gt;
  &lt;attr name="id" type="input"&gt;
   &lt;tooltip&gt;En unik identifikation för elementet &lt;/tooltip&gt;
   &lt;whatsthis&gt;En unik identifikation för elementet &lt;/whatsthis&gt;
   &lt;location col="1" row="0"/&gt;
  &lt;/attr&gt;

  &lt;label&gt;
   &lt;text&gt;version&lt;/text&gt;
   &lt;location col="0" row="1"/&gt;
  &lt;/label&gt;
  &lt;attr name="version" type="input"&gt;
   &lt;tooltip&gt;Version för schema.&lt;/tooltip&gt;
   &lt;whatsthis&gt;Version för schema.&lt;/whatsthis&gt;
   &lt;location col="1" row="1"/&gt;
  &lt;/attr&gt;

  &lt;label&gt;
   &lt;text&gt;targetNamespace&lt;/text&gt;
   &lt;location col="0" row="2"/&gt;
  &lt;/label&gt;
  &lt;attr name="targetNamespace" type="input"&gt;
   &lt;tooltip&gt;Webbadressreferens till namnrymden för detta schema.&lt;/tooltip&gt;
   &lt;whatsthis&gt;Webbadressreferens till namnrymden för detta schema.&lt;/whatsthis&gt;
   &lt;location col="1" row="2"/&gt;
  &lt;/attr&gt;

  &lt;label&gt;
   &lt;text&gt;xmlns&lt;/text&gt;
   &lt;location col="0" row="3"/&gt;
  &lt;/label&gt;
  &lt;attr name="xmlns" type="input"&gt;
   &lt;tooltip&gt;Webbadressreferens för en eller flera namnrymder för användning i detta schema.
   Om inget prefix används, kan komponenterna i namnrymden användas utan kvalifikation &lt;/tooltip&gt;
   &lt;whatsthis&gt;Webbadressreferens för en eller flera namnrymder för användning i detta schema.
   Om inget prefix används, kan komponenterna i namnrymden användas utan kvalifikation &lt;/whatsthis&gt;
   &lt;location col="1" row="3"/&gt;
  &lt;/attr&gt;

  &lt;label&gt;
   &lt;text&gt;attributeFormDefault&lt;/text&gt;
   &lt;location col="0" row="4"/&gt;
  &lt;/label&gt;
  &lt;attr name="attributeFormDefault" type="list"&gt;
   &lt;items&gt;
    &lt;item&gt;qualified&lt;/item&gt;
    &lt;item&gt;unqualified&lt;/item&gt;
   &lt;/items&gt;
   &lt;tooltip&gt;Standardformulär för alla egenskaper i schema.&lt;/tooltip&gt;
   &lt;whatsthis&gt;Standardformulär för alla egenskaper i schema.&lt;/whatsthis&gt;
   &lt;location col="1" row="4"/&gt;
  &lt;/attr&gt;

  &lt;label&gt;
   &lt;text&gt;elementFormDefault&lt;/text&gt;
   &lt;location col="0" row="5"/&gt;
  &lt;/label&gt;
  &lt;attr name="elementFormDefault" type="list"&gt;
   &lt;items&gt;
    &lt;item&gt;qualified&lt;/item&gt;
    &lt;item&gt;unqualified&lt;/item&gt;
   &lt;/items&gt;
   &lt;tooltip&gt;Standardformulär för alla element i schema.&lt;/tooltip&gt;
   &lt;whatsthis&gt;Standardformulär för alla element i schema.&lt;/whatsthis&gt;
   &lt;location col="1" row="5"/&gt;
  &lt;/attr&gt;

  &lt;label&gt;
   &lt;text&gt;blockDefault&lt;/text&gt;
   &lt;location col="0" row="6"/&gt;
  &lt;/label&gt;
  &lt;attr name="blockDefault" type="input"&gt;
   &lt;location col="1" row="6"/&gt;
  &lt;/attr&gt;

  &lt;label&gt;
   &lt;text&gt;finalDefault&lt;/text&gt;
   &lt;location col="0" row="7"/&gt;
  &lt;/label&gt;
  &lt;attr name="finalDefault" type="input"&gt;
   &lt;location col="1" row="7"/&gt;
  &lt;/attr&gt;
 &lt;/tag&gt;
&lt;/TAGS&gt;
</markup
>
</literallayout>
</informalexample>
</sect4>

<sect4 id="family-two-3-2">
<title
>Familj 2</title>

<para
>Följande visar dig en korrekt familj 2 XML-taggfil. Filen råkar beskriva &PHP;:s överlastningsfunktion. Filnamnet på den här XML-taggfilen skulle vara overload.tag. </para>

<informalexample>
<literallayout
><markup>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE tags&gt;
&lt;tags&gt;
  &lt;tag name="overload" type="function" returnType="void"&gt;
    &lt;attr name="class_name" type="string" status="optional"/&gt;
  &lt;/tag&gt;
&lt;/tags&gt;
</markup
>
</literallayout>
</informalexample>
</sect4>
</sect3>
</sect2>

<sect2 id="descriptionrc-3-2">
<title
>description.rc</title>

<para
>Beskrivningsfilen description.rc är också ganska enkel. Allt av följande måste inte användas. Grundstrukturen hos filen description.rc är följande: </para>

<sect3 id="family-one-structure-3-2">
<title
>Struktur för familj 1</title>

<informalexample>
<literallayout
><markup>
[General] - Generell information.
Version = Använd 1 för &quantaplus; version &lt;= 3.1.2 och 2 för alla senare versioner.
Name = DTD-definitionssträng. (-//W3C//DTD HTML 4.01 Transitional//EN)
NickName = Det läsbara namnet på DTD:n. (HTML 4.01 Transitional).
Om inte definierad, används Name som NickName.
URL = Webbadress som pekar på DTD-definitionen. (http://www.w3.org/TR/html4/loose.dtd)
DoctypeString = Sträng att användas i !DOCTYPE-deklarationen.
(HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd")
Inherits = Namnet på DTD:n där den här DTD:n ärver sina taggar. (-//W3C//DTD HTML 4.01//EN)
DefaultExtension = Nya filer skapas med den här filändelsen. (html)
Groups = Listan med gemensamma egenskapsgrupper, som kan finnas i mer än en tagg.
(Core, I18n, Script) Se nedan. (Group1, Group2...)
NumOfPages = Hur många sidor har en taggdialogruta, förutom sidan med egenskaperna
som definieras i taggfilen? Se nedan. (Page1,...)
CaseSensitive = Om DTD:n är skiftlägeskänslig. (true|false)
Family = 1, Den här sortens DTEP är av familj 1, eftersom den beskriver taggar.

[Toolbars] - Information om DTEP-verktygsrader.
Location = Katalognamnet inne i $KDEDIR($KDEHOME)/share/apps/quanta/toolbars
där verktygsraderna för denna DTEP finns.
Names = Listan med namn på verktygsradsfiler, förutom filändelsen .toolbar.tgz, som
laddas för denna DTEP från ovan angivna katalog.

[Group1] - Ersätt med en av grupperna som listas nedan.
Attributes = Listan med egenskaper för gruppen. För närvarande behandlas alla
listade egenskaper som strängar.
Exempel:
[Core]
Attributes = id, class, style, title

[Page1] - Beskrivning av en taggeditorsida.
Title = Rubriken på sidan i dialogrutan för taggeditering.
Groups = Lista med grupper som syns på sidan. (Core, I18n)

[Extra rules] - Några regler som inte passar någon annanstans.
BooleanAttributes = (enkelt|komplext)
Exempel på enkelt: &lt;tag booleanAttr&gt;.
Exempel på komplext: &lt;tag booleanAttr="1"&gt; eller &lt;tag booleanAttr="true"&gt;
Single Tag Style = (html|XML)
Exempel på html: &lt;single_tag&gt;
Exempel på XML:  &lt;single_tag /&gt;
StructGroupsCount = Antal strukturgrupper. Se nedan.
MinusAllowedInWords = Om sant behandlas "det-här-är-ett-ord" som ett ord. Annars
behandlas det som fem ord.
TagAutoCompleteAfter = CHAR. Rutan för automatisk komplettering visas
så fort detta tecken skrivs in, eller mellanslag trycks efter tecknet.
För DTEP familj 1, är det oftast "&lt;". Texten "none" istället för
ett tecken anger att kompletteringsrutan inte ska visas automatiskt,
utan bara om användaren begär det.
AttributeSeparator = CHAR. Det här tecknet betyder att egenskapsnamnet
har slutat. Det är " för en XML DTEP.
TagSeparator = CHAR. På motsvarande sätt som ovan.

[StructGroup_1] - Definition av strukturgrupp 1.
Name = Texten som visas om det finns taggar som matchar gruppen.
No_Name = Texten som visas om det INTE finns taggar som matchar gruppen.
Icon = Namnet på ikonen som visas innan ovanstående texter.
Tag = taggnamn(egenskap1, egenskap2, ...). Taggar med namn taggnamn
visas under den här gruppen. Objektets text är "egenskap1_värde | egenskap2_värde | ..."
För närvarande får bara en tagg anges här.
HasFileName = (true|false) Sant om objektets text (egenskapsvärden ovan) innehåller ett filnamn.
FileNameRx = Reguljärt uttryck som används för att ta bort onödiga tecken från objektets text.

[Parsing rules] - Regler som används när dokumentet tolkas.
SpecialAreas = Inledande och avslutande sträng för särskilda områden, åtskilda med ett kommatecken.
Särskilda områden tolkas inte enligt denna DTEP:s regler, utan med sina egna regler.
Ett särskilt område kan vara en DTEP från en annan familj, en kommentar eller någonting liknande.
T.ex. &lt;!-- --&gt;
SpecialAreaNames = Lista med ovanstående särskilda områdesnamn, åtskilda med kommatecken. T. ex.: comment
SpecialTags = taggnamn(egenskapsnamn) - Anger en tagg som definierar början på ett speciellt område.
MayContain = Lista med alla familj 2 DTEP som kan finnas i dokumentet, åtskilda med kommatecken.
(php, css)
</markup
>
</literallayout>
</informalexample>
</sect3>

<sect3 id="family-two-structure-3-2">
<title
>Struktur för familj 2</title>

<informalexample>
<literallayout
><markup>
[General] - Generell information.
Version = Använd 1 för &quantaplus; version &lt;= 3.1.2 och 2 för alla senare versioner.
Name = Egentligt namn
NickName = Vad de flesta kallar den. Om inte definierad, används Name som NickName.
Inherits = Namnet på den DTEP där denna DTEP ärver taggar. (Name, inte NickName)
DefaultExtension = Nya filer skapas med den här filändelsen. (php)
NumOfPages = 0, Alltid noll, eftersom det inte finns en dialogruta för taggredigering för en familj 2 DTEP.
CaseSensitive = Om DTEP:n är skiftlägeskänslig. (true|false)
Family = 2, Den här sortens DTEP är av familj 2, eftersom den inte beskriver taggar.
[Toolbars] - Information om DTEP verktygsrader.
Location = Katalognamnet inne i $KDEDIR($KDEHOME)/share/apps/quanta/toolbars
där verktygsraderna för denna DTEP finns.
Names = Listan med namn på verktygsradsfiler, förutom filändelsen .toolbar.tgz, som
laddas för denna DTEP från ovan angivna katalog.

[Extra rules] - Några regler som inte passar någon annanstans.
BooleanAttributes = (enkelt|komplext)
Exempel på enkelt: &lt;tag booleanAttr&gt;.
Exempel på komplext: &lt;tag booleanAttr="1"&gt; eller &lt;tag booleanAttr="true"&gt;
StructGroupsCount = Antal strukturgrupper. Se nedan.
MinusAllowedInWords = Om sant behandlas "det-här-är-ett-ord" som ett ord. Annars
behandlas det som fem ord.
TagAutoCompleteAfter = CHAR. Rutan för automatisk komplettering visas
så fort detta tecken skrivs in, eller mellanslag trycks efter tecknet.
För DTEP familj 1, är det oftast "&lt;". Texten "none" istället för ett
tecken anger att kompletteringsrutan inte ska visas automatiskt, utan
bara om användaren begär det.
AttributeSeparator = CHAR. Det här tecknet betyder att egenskapsnamnethar slutat.
Det är " för en XML DTEP.
TagSeparator = CHAR. På motsvarande sätt som ovan.
AttributeAutoCompletionAfter = CHAR. På motsvarande sätt som TagAutoCompletionAfter, men
för taggegenskaper. Det är normalt "(" och ":" för CSS.

[StructGroup_1] - Definition av strukturgrupp 1.
Name = Texten som visas om det finns taggar som matchar gruppen.
No_Name = Texten som visas om det INTE finns taggar som matchar gruppen.
Icon = Namnet på ikonen som visas innan ovanstående texter.
Tag = taggnamn(egenskap1, egenskap2, ...). Taggar med namn taggnamn visas
under den här gruppen. Objektets text är "egenskap1_värde | egenskap2_värde | ..."
För närvarande får bara en tagg anges här.
HasFileName = (true|false) Sant om objektets text (egenskapsvärden ovan) innehåller ett filnamn.
FileNameRx = Reguljärt uttryck som används för att ta bort onödiga tecken från objektets text.
SearchRx = Reguljärt uttryck som används för att hitta textområden i en familj 2 DTEP,
som ska tillhöra den här gruppen
ClearRx = Reguljärt uttryck som används för att ta bort onödig text eller onödiga tecken från
ovanstående sökresultat. Den rensade strängen visas i strukturträdet.

[Parsing rules] - Regler som används när dokumentet tolkas.
SpecialAreas = Inledande och avslutande sträng för särskilda områden, åtskilda med ett kommatecken.
Särskilda områden tolkas inte enligt denna DTEP:s regler, utan med sina egna regler.
Ett särskilt område kan vara en DTEP från en annan familj, en kommentar eller någonting liknande.
T.ex. &lt;!-- --&gt;
SpecialAreaNames = Lista med ovanstående särskilda områdesnamn, åtskilda med kommatecken. T. ex.: comment
SpecialTags = taggnamn(egenskapsnamn) - Anger en tagg som definierar början på ett speciellt område.
AreaBorders = Lista med områdesgränser som innesluter denna familj 2 DTEP, åtskilda med kommatecken
I fallet PHP, är det: &lt;? ?&gt;, &lt;* *&gt;, &lt;% %&gt;
Tags = taggnamn(egenskap). Om den ovanstående (riktiga) DTD:n har en tagg med taggnamn
och taggens egenskapsvärde är samma som DTD-namnet, tolkas taggområdet enligt reglerna
för denna DTD.
Comments = Lista med områdesgränser för kommentarer, åtskilda med kommatecken. EOL betyder radslut.
T.ex.: // EOL, /* */
StructKeywords = Lista med strukturnyckelord, åtskilda med semikolon.Strukturer behandlas
som nya noder i strukturträdet.
StructBeginStr = En sträng som anger början på en struktur (som {)
StructEndStr = En sträng som anger början på en struktur (som })
StructRx = Reguljärt uttryck som innehåller början eller slutet på strukturområdet.
T.ex. \\{ | \\} (strukturens områdesgräns kan vara { eller })
</markup
>
</literallayout>
</informalexample>
</sect3>
</sect2>
</sect1>

<sect1 id="creating-toolbars-3-2">
<title
>Skapa verktygsrader</title>

<para
>Det följande visar dig hur man skapar verktygsrader för en &DTEP;. Verktygsrader är grafiska element, som tilldelas åtgärder. I &quantaplus; är åtgärder grunden för nästan alla utökningar som &quantaplus; har, och kommer att få i framtiden. &quantaplus; erbjuder också automatisk komplettering och taggdialogrutor. Gränserna för vad du kan göra med åtgärder är nästan obegränsade. Som exempel, använder vi <ulink url="http://tidy.sf.net"
>&HTML; Tidy</ulink
> på våra webbsidor. </para>

<sect2 id="from-scratch-to-complete-3-2">
<title
>Från början till färdig verktygsrad</title>

<para
>Till att börja med, måste du skapa en användarverktygsrad. Välj <menuchoice
><guimenu
>Verktygsrader</guimenu
> <guimenuitem
>Lägg till användarverktygsrad.</guimenuitem
></menuchoice
>. </para>

<para
>Om det finns många taggar i språket, rekommenderas du att dela upp taggarna i logiska grupper. Du måste skapa en ny användarverktygsrad för varje grupp. I det här fallet finns det inte många, så vi skapar en verktygsrad och namnger den efter taggspråket. </para>

<para
>Så snart alla verktygsrader har skapats, måste du lägga till och anpassa åtgärderna. För att göra det, välj <menuchoice
><guimenu
>Inställningar</guimenu
> <guimenuitem
>Anpassa åtgärder</guimenuitem
></menuchoice
>. </para>

<para
>Delarna i fönstret är ganska rättframma. Tryck på knappen <guibutton
>Ny åtgärd</guibutton
> längst ner i fönstret för att komma till redigeringsläge. </para>

<para
>Fyll i alla nödvändiga fält, och lägg till taggen i lämpliga verktygsrader. </para>

<para
>Komplettera resten, och om taggarna har egenskaper som du alltid tänker använda, markera rutan <guilabel
>Kör dialogen för "Redigera tagg" om den finns</guilabel
>, så att du blir tillfrågad varje gång åtgärden används. </para>

<para
>Du bör nu ha något som liknar följande: </para>

<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img7.png" format="PNG"/>
</imageobject>
</mediaobject>

<para
>Tryck på knappen <guibutton
>Verkställ</guibutton
>, så ser du att åtgärden har lagts till i verktygsraderna du har markerat. </para>

<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img8.png" format="PNG"/>
</imageobject>
</mediaobject>

<para
>Usch, då! Vilken hemsk ikon. Hur ska du själv och andra komma ihåg att den ikonen hör ihop med åtgärden. Låt oss ersätta den innan det uppstår problem. </para>

<para
>För att skapa en ikon som bättre beskriver åtgärden, använder vi &kiconedit;. Välj det i K-menyn, <menuchoice
><guisubmenu
>Grafik</guisubmenu
> <guisubmenu
>Fler program</guisubmenu
></menuchoice
> (eller var din distribution än har placerat det). </para>

<para
>&kiconedit; har standardstorleken 32 x 32 bildpunkter, men vi behöver 22 x 22. För att ändra det, välj <menuchoice
><guimenu
>Redigera</guimenu
> <guimenuitem
>Ändra storlek</guimenuitem
></menuchoice
>. </para>

<para
>Kom ihåg att du skapar en ikon som inte bara ska hjälpa dig själv att komma ihåg vilken åtgärd som gör vad, utan också andra användare av denna &DTEP;. </para>

<para
>Eftersom taggen vi skapar ikonen till, kallas <quote
>start</quote
>, bestämmer vi oss för att skapa ett <quote
>start-tecken</quote
>. Genom att använda grön färg (grönt tolkas ofta som <quote
>kör</quote
>, <quote
>starta</quote
> eller <quote
>fortsätt</quote
>) förmedlar vi, eller borde vi åtminstone förmedla, användaren informationen att genom ett klick på åtgärden placeras taggen &lt;start&gt; i det aktuella dokumentet. </para>

<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img15.png" format="PNG"/>
</imageobject>
</mediaobject>

<para
>Nu när ikonen är färdigskapad, sparar vi den. </para>

<para
>När vi är klara med att skapa ikoner, måste ikonen associeras med åtgärden. För att göra det, öppna fönstret <menuchoice
><guimenu
>Inställningar</guimenu
> <guimenuitem
>Anpassa åtgärder</guimenuitem
></menuchoice
> igen (i &quantaplus;) och välj åtgärden som ikonen skapades för. Intill fältet <guilabel
>Text</guilabel
>, finns en knapp. Klicka på den. </para>

<para
>Välj <guilabel
>Övriga ikoner</guilabel
> och klicka sedan på knappen <guibutton
>Bläddra...</guibutton
>. </para>

<para
>Gå till katalogen där du sparade ikonen, välj den och klicka på <guibutton
>Ok</guibutton
>. </para>

<para
>Tryck på knappen <guibutton
>Verkställ</guibutton
>, och fortsätt antingen att göra samma sak med övriga taggar, eller klicka på <guibutton
>Ok</guibutton
> för att avsluta. </para>

<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img18.png" format="PNG"/>
</imageobject>
</mediaobject>

<para
>Antag att vi vill lägga till några vanliga &quantaplus; funktioner i verktygsraden, eller kanske skulle verktygsraden vara bättre om den organiserades på ett annat sätt, med några avskiljare för att gruppera åtgärderna. Öppna dialogrutan <guilabel
>Anpassa verktygsrader</guilabel
> genom att välja <menuchoice
><guimenu
>Inställningar</guimenu
> <guimenuitem
>Anpassa verktygsrader</guimenuitem
></menuchoice
>. Försäkra dig om att vår verktygsrad är vald. </para>

<para
>Vi väljer avskiljaren (längst upp i vänsterkolumnen) för verktygsraden. När man väl har valt objektet som ska läggas till i verktygsraden, trycker man på högerpilen. Då läggs den till i verktygsraden. </para>

<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img21.png" format="PNG"/>
</imageobject>
</mediaobject>

<para
>Vi vill ha ett snabbt sätt att komma åt <guilabel
>Visa med Konqueror</guilabel
>. Välj den och lägg till i verktygsraden. </para>

<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img22.png" format="PNG"/>
</imageobject>
</mediaobject>

<para
>Observera hur avskiljaren hjälper med gruppering. Någon som inte sett vår verktygsrad tidigare, skulle kunna tro att knappen &konqueror; liknade eller var motsatsen till start-knappen. </para>

<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img23.png" format="PNG"/>
</imageobject>
</mediaobject>

<para
>Verkställ dina ändringar, och tryck på <guibutton
>Ok</guibutton
> när du är klar för att avsluta. </para>

<para
>Titta på den fantastiska nya verktygsraden! Mycket bekvämare nu. </para>

<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img24.png" format="PNG"/>
</imageobject>
</mediaobject>

<para
>Kom ihåg att prova verktygsraden, genom att klicka på knapparna, så att du vet att utmatningen är riktig. </para>

<mediaobject>
<imageobject>
<imagedata fileref="dtep_doc_img25.png" format="PNG"/>
</imageobject>
</mediaobject>

<para
>För att nu spara verktygsraden, väljer vi <menuchoice
><guimenu
>Verktygsrader</guimenu
> <guisubmenu
>Spara verktygsrader</guisubmenu
> <guimenuitem
>Spara som lokal verktygsrad</guimenuitem
></menuchoice
>. </para>

<para
>Spara den i rätt katalog. Eftersom NeXML inte finns, lägger vi den bara i toppnivåkatalogen, men verktygsrader ska sparas i rätt katalog. Försäkra dig om att du justerar description.rc så att verktygsraderna laddas när en ny fil av typen skapas. </para>
</sect2>
</sect1>


<sect1 id="creating-quanta-docs-3-2">
<sect1info>
<title
>Skapa din egen dokumentation</title>
<authorgroup>
<author
><firstname
>Robert</firstname
> <surname
>Nickel</surname
> <affiliation
> <address
><email
>robert@artnickel.com</email
></address>
</affiliation>
</author>

<othercredit role="translator"
><firstname
>Stefan</firstname
><surname
>Asserhäll</surname
><affiliation
><address
><email
>stefan.asserhall@comhem.se</email
></address
></affiliation
><contrib
>Översättare</contrib
></othercredit
> 

</authorgroup>
</sect1info>

<title
>Skapa din egen dokumentation</title>

<para
>Troligen är de mest anmärkningsvärda tilläggen till &quantaplus; för den vanliga användaren, tillägg av dokumentation för de tagg- eller skriptspråk som är mest omtyckta. Med detta syfte, förklarar det här kapitlet hur jag skapar &PHP;-dokumentationsträdet för min egen användning. </para>

<para
>Innan du börjar skapa din egen dokumentation, vill du kanske titta på <ulink url="http://quanta.sf.net/main1.php?contfile=resource"
>&quantaplus;s arkiv</ulink
> för att se om någon redan har gjort den här uppsättningen. </para>

<para
>Det finns två delar i processen. Först måste du skaffa befintlig dokumentation för taggspråket, skriptspråket eller något annat språk som du är ute efter. Därefter måste du skapa <filename
>docrc</filename
>-filen. Det första får du klara själv, det andra är vad vi täcker här. </para>

<para
>Den allmänna formen för docrc-filen är följande: </para>

<informalexample>
<literallayout
>#KDE konfigurationsfil
[Tree]
Doc dir=<replaceable
>sökväg, relativt denna filen, till dokumentationens HTML-filer</replaceable
> t.ex. php42/
#toppnivåelement
Top Element=<replaceable
>Din beskrivning av de här dokumenten</replaceable
> t.ex. <acronym
>PHP</acronym
> 4.2 dokumentation

Section 1=Section1.html
Section 2=#Sec2.1,#Sec2.2,#Sec2.3
Sec2.1=Sec2.1.html
Sec2.2=Sec2.2.html
Sec2.3=Sec2.3.html
...

[Context]
ContextList=func1,func2,tag1,tag2,tag3
func1=func1.html
func2=func2.html
tag1=tag1.html
tag2=tag2.html
tag3=tag3.html
</literallayout>
</informalexample>

<para
>Filen <filename
>docrc</filename
> är uppdelad i två avdelningar: Tree (träd) och Context (Sammanhang). </para>

<para
>Avdelningen Tree definierar presentationsaspekter för dokumentet under dokumentationsfliken. Du ser till exempel att i &PHP;-dokumentationen, har du något som liknar det här: </para>

<mediaobject>
<imageobject>
<imagedata fileref="doc-view1.png" format="PNG"/>
</imageobject>
</mediaobject>

<para
>Med referens till ovanstående, ser min &PHP; <filename
>docrc</filename
> ut så här: </para>

<informalexample>
<literallayout
>#KDE konfigurationsfil

[Tree]

Doc dir=php42/

#toppnivåelement
Top Element=PHP 4.2 dokumentation

PHP 4.2 dokumentation=Innehållsförteckning,#Komma igång,#Språkreferens

Innehållsförteckning=index.html

Komma igång=Inledning, ...
Inledning=introduction.html
...

Språkreferens=Grundläggande syntax, ...
Grundläggande syntax=language.basic-syntax.html
...

</literallayout>
</informalexample>

<para
>Observera <literal
>#</literal
> framför <quote
>Komma igång</quote
> och <quote
>Språkreferens</quote
>. Det anger att de är delinnehåll i trädet och har eget innehåll. Jag tror inte det finns en angiven gräns för djupet här (utom det som dikteras av sunt förnuft) - använd din egen bedömning. </para>

<para
>För innehållsförteckningen, ser du att den direkt refererar till en fil (och som en konsekvens, visas den längst ner i trädvyn, kataloger kommer först). </para>

<important>
<para
>Mellanslag påverkar ingenting negativt, men se upp med tecknen &amp; och &lt;. Dessa ska troligen ersättas med &amp;amp; och &amp;lt; i alla &quantaplus; &XML;-baserade resursfiler. </para>
</important>

<para
>Sammanhangsavsnittet är avsnittet i docrc-filen som används för att möjliggöra sammanhangsberoende hjälp. Om du till exempel skriver ett &PHP;-skript och vill se dokumentationen för funktionen <function
>mysql_fetch_array</function
>, markerar du helt enkelt funktionen och trycker sedan <keycombo action="simul"
>&Ctrl;<keycap
>H</keycap
></keycombo
> för sammanhangsberoende hjälp. Dokumentationen om <function
>mysql_fetch_array</function
> visas omedelbart. Det finns bara två typer av poster här: sammanhangslistan och filassociationsraderna. </para>

<variablelist>
<varlistentry>
<term
>Sammanhangslista</term>
<listitem>
<para
>Mycket enkel. Det här är bara en lista av sammanhangsposter åtskilda med kommatecken, som du vill ha tillgängliga (för &PHP; är det funktionerna i &PHP;). </para>
</listitem>
</varlistentry>
<varlistentry>
<term
>Filassociationsrader</term>
<listitem>
<para
>De är på formen sammanhangspost = HTML-dokumentsida. T.ex. acos=function.acos.html. </para>
</listitem>
</varlistentry>
</variablelist>

<para
>En rensad version av mitt <filename
>docrc</filename
> sammanhangsavsnitt ser ut som följer: </para>

<informalexample>
<literallayout
>#Nyckelord för sammanhangsberoende hjälp
[Context]
ContextList=abs,acos,acosh,addcslashes,addslashes,...

abs=function.abs.html
acos=function.acos.html
acosh=function.acosh.html
addcslashes=function.addcslashes.html
addslashes=function.addslashes.html
...
</literallayout>
</informalexample>

<para
>Nu kan du bara spara din <filename
>docrc</filename
>-fil. Spara den i <filename class="directory"
> $<envar
>HOME</envar
>/.kde/share/apps/quanta/doc</filename
> eller <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/apps/quanta/doc</filename
> för lokal eller global användning. Skapa sedan en katalog (den som anges i <filename
>docrc</filename
>-filen) i samma katalog som <filename
>docrc</filename
>-filen finns, och kopiera &HTML;-dokumentationssidorna dit. </para>

<para
>Du måste starta om &quantaplus;, och då ser du dina egna dokument. </para>

<para
>När du väl är säker på att de är bra, och värda att dela, skicka <filename
>docrc</filename
>-filen tillsammans med en beskrivning av passande information om vilka dokument du använde till <ulink url="http://quanta.sf.net/main1.php?contfile=resource"
>&quantaplus;s arkiv</ulink
> för användning av &quantaplus;s gemenskap. Du blir inte rik, men du känner dig nöjd med vetskap om att du bidragit till den bästa webbutvecklingsmiljön som finns. </para>

</sect1>
</chapter>
