#Makeindex

Eine Liste von Elementen sortieren und aufteilen um einen Index zu erzeugen.

#Kindelemente

(keine)

#Elternelemente

Element, SaveDataset

#Attribute

pagenumber (Text, optional, seit Version 2.7.11)

Der Name des Attributs der die Seitenzahl enthält. Voreinstellung ist 'page'.

section (Text)

Erzeuge ein XML-Element mit diesem Namen für jeden Abschnitt (Buchstabe) in dem Index.

select (XPath-Ausdruck)

Der XPath-Ausdruck der die Elementstruktur für den Index enthält ($Variable).

sortkey (Text)

Der Name des Attributs das den Indexeintrag enthält (der sortiert werden soll).

#Beispiel

Die Indexerstellung funktioniert in zwei Schritten. Im ersten Schritt werden die Daten in eine Elementstruktur gespeichert und mit diesem Befehl sortiert. Im zweiten Schritt wird die Elementstruktur ausgegeben (LoadDataset).

<Layout xmlns="urn:speedata.de:2009/publisher/en"
  xmlns:sd="urn:speedata:2009/publisher/functions/en">

  <Record element="data">
    <SetVariable variable="indexeinträge">
      <Element name="indexeintrag">
        <Attribute name="name" select="'Giraffe'" />
        <Attribute name="page" select="1" />
      </Element>
      <Element name="indexeintrag">
        <Attribute name="name" select="'Garage'" />
        <Attribute name="page" select="2" />
      </Element>
      <Element name="indexeintrag">
        <Attribute name="name" select="'Grußwort'" />
        <Attribute name="page" select="3" />
      </Element>
      <Element name="indexeintrag">
        <Attribute name="name" select="'Aufzug'" />
        <Attribute name="page" select="4" />
      </Element>
    </SetVariable>

    <SetVariable variable="index">
      <Element name="Index">
        <Makeindex select="$indexeinträge/indexeintrag" sortkey="name" section="teil" />
      </Element>
    </SetVariable>
    <ProcessNode select="$index/Index"></ProcessNode>
  </Record>

  <Record element="Index">
    <ForAll select="teil">
      <PlaceObject>
        <Table width="3" stretch="max">
          <Tr>
            <Td border-bottom="0.4pt" colspan="2">
              <Paragraph>
                <Value select="@name" />
              </Paragraph>
            </Td>
          </Tr>
          <ForAll select="indexeintrag">
            <Tr>
              <Td>
                <Paragraph>
                  <Value select="@name" />
                </Paragraph>
              </Td>
              <Td>
                <Paragraph>
                  <Value select="@page" />
                </Paragraph>
              </Td>
            </Tr>
          </ForAll>
        </Table>
      </PlaceObject>
      <NextRow />
    </ForAll>
  </Record>
</Layout>

#Siehe auch

Das Kapitel Stichwortverzeichnisse.