core:index (Identifzieren eines Listeneintrags per Reihenfolgeposition)
Das Steuerungsattribut core:index kann verwendet werden, um in einem Import den zu aktualisierenden Eintrag einer Liste anhand seiner Listenposition zu identifizieren.
Der "Index" zählt dabei beginnend von 0 ganzzahlig aufwärts. Er wird unmittelbar vor jedem Zugriff komplett neu aufgebaut. Dies ist dann besonders wichtig, falls die adressierten Elemente nicht aktualisiert, sondern gelöscht werden sollen.
Häufig beinhaltet die Datenstruktur der Listeneintrags auch ein eigenes Index-Attribut, das z. B. bei typisierten pluralen Attributen auch index heißt.
Das Beispiel rechts zeigt einen XML- Ausschnitt vom attributes-Knoten eines Adressobjekts:
|
<attributes> |
In beiden Fällen kann das jeweilige Indexattribut verwendet werden, um bei einen Import einen bestimmten Listeneintrag anhand seiner Position zu identifizieren.
Allerdings kann für denselben Zweck in beiden Fällen auch das core:index -Attribut für die Identifikation des Listeneintrags genutzt werden.
Beispiel 1: Aktualisieren eines bestimmten Eintrags in einem pluralen Attribut
Für ein Benutzerkonto liegen Adressdaten vor wie im einleitenden Beispiel gezeigt. Per Import soll eine bestimmte der aufgelisteten "Kommunikationsinformationen" aktualisiert werden, nämlich die mit orderIndex=1, die an der zweiten Position erscheint.
Vor dem Import:
|
|
Der rechts abgebildete Import verwendet die Aktion UPDATE:
Dem zweiten Eintrag wird eine neue E-Mail-Adresse zugewiesen. |
<?xml version="1.0" encoding="UTF-8"?> |
Nach dem Import: (Änderung durch Selektion hervorgehoben)
|
Beispiel 2: Löschen der ersten beiden Einträge für ein Typisiertes plurales Attribut
Für ein Benutzerkonto liegen Adressdaten vor wie im einleitenden Beispiel gezeigt. Per Import sollen die (ersten) beiden Einträge für das plurale Textattribut ACCESS_CODE gelöscht werden.
Der rechts abgebildete Import verwendet die Aktion UPDATE:
►HINWEIS◄ Das wiederholte Einfügen desselben Knotens in einer Importstruktur ermöglicht das Zuordnen einer Integer-Variable als "Pfad" für diesen Knoten, deren wahlweise statisch oder per Zuweisung zur Laufzeit des Profils bestimmter Wert die Anzahl der Iterationen definiert. |
<?xml version="1.0" encoding="UTF-8"?> |
►ANMERKUNG◄ Man könnte versuchen, im Import auf die beiden zu löschenden Einträge mit unterschiedlichen Werten für core:index (nämlich 0 und 1) zuzugreifen. Dann bliebe der zweite Eintrag bestehen und ein ggf. nachrückender dritter Eintrag würde ggf. gelöscht. Würden die Löschungen in umgekehrter Reihenfolge (erst 1 dann 0) ausgeführt, wäre das Löschen für beide Einträge erfolgreich.