Framesets mit dem NPSOBJ-Frame-Kommando automatisch erzeugen

Um für eine exportierte Datei ein Frameset und die erforderlichen Frame-Inhalte zu erzeugen, benötigen Sie eine Layoutdatei. In dieser Layoutdatei wird zunächst das Frameset und anschließend jedes Frame mit einer NPSOBJ-Anweisung nach folgendem Muster definiert:

<npsobj frame="frameName" defaulttarget="defaultTarget">
  frameContent
</npsobj>

Beim Export und bei der Vorschau bewirkt eine solche NPSOBJ-Anweisung, dass neben der Ausgabedatei für die Datei eine weitere Ausgabedatei erzeugt wird, die den ausgewerteten Inhalt des NPSOBJ-frame-Tags enthält. Der Name dieser Frame-Inhaltsdatei setzt sich aus dem Namen der exportierten Datei, einem Punkt, dem im NPSOBJ-Tag angegebenen Framenamen frameName und der Dateinamenserweiterung zusammen. Beim Export des Dokuments sample wird also neben der Hauptdatei sample.html die Datei sample.frameName.html generiert.

In einer Layoutdatei zur Erzeugung von Framesets und Frames wird der Hauptinhalt der zu exportierenden Datei in den Inhalt eines NPSOBJ-frame-Tags aufgenommen, sodass er als Frame-Inhaltsdatei vorliegt. Die erzeugte Hauptdatei dagegen enthält nur den Code, der die NPSOBJ-frame-Tags umgibt, also vor allem den Code, der das Frameset definiert.

Das folgende Beispiel geht davon aus, dass sich im gleichen Ordner die Dateien sampledoc und die Layoutdatei frametemplate befinden. In frametemplate werden ein zweiteiliges Frameset und die beiden dazu gehörenden Frames definiert:

<html>
  <head>
  <title><npsobj insertvalue="var" name="title"/></title>
  </head>
  <frameset rows="100,*">
    <npsobj frame="banner">
      <html>
        <head>
        <title>Banner</title>
        </head>
        <body>
          <img src="/banners/sample.tif">
          <!-- Put navigation code here -->
        </body>
      </html>
    </npsobj>
    <npsobj frame="content">
      <html>
        <head>
        <title><npsobj insertvalue="var" name="title"/></title>
        </head>
        <body>
          <npsobj insertvalue="var" name="body"/>
        </body>
      </html>
    </npsobj>
  </frameset>
</html>

Die Datei sampledoc hat den Titel Sampledoc-Titel und enthält den folgenden Code:

<h1>Sampledoc</h1>
<p>Ein Beispieldokument mit einem <a href="sample2.html">
internen Link</a> und einem <a href="http://www.example.com"
target="_blank">externen Link</a>.</p>

Beim Export von sampledoc mit Hilfe der Layoutdatei frametemplate entstehen die drei Ausgabedateien sampledoc.html, sampledoc.banner.html und sampledoc.content.html. Folgt man einem Link auf das Dokument sampledoc, so wird die Hauptdatei sampledoc.html angezeigt.

Sampledoc.html enthält im Wesentlichen die Frameset-Definition:

<html>
  <head>
  <title>Sampledoc-Titel</title>
  </head>
  <frameset rows="100,*">
    <frame name="banner" src="sampledoc.banner.html">
    <frame name="content" src="sampledoc.content.html">
  </frameset>
</html>

Die Datei sampledoc.banner.html:

<html>
  <head>
  <title>Banner</title>
  </head>
  <body>
    <img src="/banners/sample.tif">
    <!-- Put navigation code here -->
  </body>
</html>

Die Datei sampledoc.content.html:

<html>
  <head>
  <title>Sampledoc-Titel</title>
  </head>
  <body>
    <h1>Sampledoc</h1>
    <p>Ein Beispieldokument mit einem <a href="sample2.html" target="_top">
    internen Link</a> und einem <a href="http://www.example.com"
    target="_blank">externen Link</a>.</p>
  </body>
</html>

Bitte beachten Sie, dass Sie in einer NPSOBJ-frame-Anweisung mit dem Tag-Attribut defaulttarget festlegen können, in welchem Frame ein verlinktes Dokument angezeigt werden soll. Der voreingestellte Wert für defaulttarget ist _top, Sie brauchen dieses Tag-Attribut also nicht anzugeben, wenn die Links in einem Frame auf Dokumente verweisen, die ebenfalls als Frameset exportiert wurden. Andere Tag-Attribute, die Sie in NPSOBJ-frame-Tags verwenden, werden unverändert in das resultierende frame-Tag übernommen.

NPSOBJ-frame-Tags dürfen nicht verschachtelt werden, d. h. sie dürfen keine NPSOBJ-frame-Tags enthalten.