Positionierung in strukturierten Dokumenten

**[Update:]** Sie können die Beispieldatei (FrameMaker + Skript) jetzt auch [hier](http://www.framescript.eu/wp-content/uploads/2008/09/elementrange.zip) laden.

Die Positionierung in unstrukturierten Dokumenten mit dem Objekt *TextLoc* ist relativ leicht nachvollziehbar, den eine Cursor-Position besteht dort aus dem Absatz *(Object)* und dem Abstand vom Beginn des Absatzes *(Offset)*.

In strukturierten Dokumenten ist es oft besser mit den Objekten *ElementLoc* oder *ElementRange* zu arbeiten, dort gibt es aber eine Vater-Kind-Beziehung; und wie die Optionen für *Parent* und *Child* richtig zu setzen sind, zeigt die folgende Grafik:
 

![How to define ElementLoc and ElementRange](/wp-content/uploads/2008/06/elementlocations.gif)

### Ein Beispiel • An example

In der folgenden Struktur sollen die ersten beiden `` ans Ende des `` versetzt werden.

Based on the shown structure the two first `` elements should be moved to the end of the `` element.

![Beispielstruktur • Exmaple structure](/wp-content/uploads/2008/06/example_structure.png)

Set lvDoc = ActiveDoc;
Set lvChapter = lvDoc.MainFlowInDoc.HighestLevelElement;

// In most cases you will use better methods to get element objects
Set lvSection = lvChapter.FirstChildElement.NextSiblingElement;
Set lvBody = lvSection.FirstChildElement.NextSiblingElement;

// Task: Select the first two para elements
Set lvPara1 = lvBody.FirstChildElement;
Set lvPara2 = lvPara1.NextSiblingElement;
If (lvPara2.NextSiblingElement)
Set lvChildAtEndOfRange = lvPara2.NextSiblingElement;
Else
Set lvChildAtEndOfRange = 0;
EndIf
New ElementRange NewVar(lvElRange)
Parent(lvBody) Child(lvPara1)
Parent(lvBody) Child(lvChildAtEndOfRange);
Set ActiveDoc.ElementSelection = lvElRange;
Display ‚Here you are‘;

// Task: Cut and Paste at the end of the container
PushClipboard;
Cut Text DocObject(lvDoc);

New ElementLoc NewVar(lvElLoc)
Parent(lvBody) Child(0); // and of
Set ActiveDoc.ElementSelection = lvElLoc;
Display ‚Target position‘;

Paste Text DocObject(lvDoc);
PopClipboard;

Dieser Beitrag wurde unter Lernen veröffentlicht. Setze ein Lesezeichen auf den Permalink.

2 Antworten zu Positionierung in strukturierten Dokumenten

  1. richard sagt:

    Wenn das jemanden helfen soll, so fehlt der Code für den Elementrange Parent(E2) Child(E3)-Parent(E2)Child(E4). Was nutzt einem die Grafik, ohne den Codebeispiel, denn der ist kompliziert?

  2. Michael Müller-Hillebrand sagt:

    @Richard: Ein ElementRange wird immer aus zwei ElementLoc zusammengesetzt und wie das geht zeigt der Text im grauen Kasten.

    Ein Codebeispiel habe ich ergänzt.

Kommentare sind geschlossen.