2.77 .dataselect[attribute]

Mit diesem Attribut werden gleichzeitig das als Index angegebene Datamodel-Attribut und ein als Wert zugewiesenes Selektionsmuster für Knoten eines XML-Dokuments definiert.

Definition

  • Datentyp

    string

  • Zugriff

    get, set

  • changed-Ereignis

    nein

Das definierte Datamodel-Attribut kann dann zur Kopplung mit einer View verwendet werden. Datenänderungen werden über das im Index angegebene Attribut des Doccursors weitergegeben. Das Selektionsmuster beschreibt die Knoten des XML-Dokuments aus denen die Daten geholt bzw. in denen sie gespeichert werden.

Die Syntax des Selektionsmusters entspricht der Musterdefinition für die :select-Methode des Doccursors.

Das Selektionsmuster des .dataselect-Attributs ohne Index definiert Knoten als Ausgangspunkte für die indizierten .dataselect-Attribute. Die Selektionsmuster der indizierten .dataselect-Attribute werden dann als relative IDM-Pfade interpretiert. Sie referenzieren Knoten innerhalb der Teilbäume, deren Wurzeln durch das nicht indizierte .dataselect-Attribut selektiert werden. Die indizierten .dataselect-Attribute greifen in diesem Fall also nicht auf das gesamte XML-Dokument zu, sondern nur auf die Unterknoten jener Knoten, die vom nicht indizierten .dataselect-Attribut selektiert worden sind.

Um eine konsistente Behandlung von optionalen XML-Elementen und ‑Attributen zu ermöglichen, gibt die Selektion eines Datamodel-Attributs einen Leerstring zurück, wenn ein Wert nicht vorhanden ist oder sich nicht innerhalb der vorselektierten Teilbäume befindet.

Mit dem Attribut .dataselectattr kann festgelegt werden, ob das Datamodel-Attribut mit dem Knoteninhalt oder einem Knotenattribut verknüpft ist. Datentyp und Kardinalität des Datamodel-Attributs können mit den Attributen .dataselecttype und .dataselectcount gesteuert werden.

Beispiel

In diesem Beispiel stammen die Daten für eine Liste mit Nobelpreisträgern aus einem XML-Dokument, in dem die Informationen zu jedem Preisträger in einem Knoten prize stehen.

<?xml version="1.0"?>
<nobelprizes>
  <category id="p">Physics</category>
  <category id="c">Chemistry</category>
  <prize year="1" category="p">
    <merit>discovery of x-rays</merit>
    <winner>Wilhelm Conrad Röntgen</winner>
  </prize>
  <prize year="11" category="c">
    <merit>discovery of radioactivity</merit>
    <winner>Marie Curie</winner>
  </prize>
  <prize year="18" category="p">
    <merit>development of the concept of quanta</merit>
    <winner>Max Planck</winner>
  </prize>
  <prize year="70" category="c">
    <merit>discovery of sugar nucleotides and their role
      in the biosynthesis of carbohydrates</merit>
    <winner>Luis Leloir</winner>
  </prize>
</nobelprizes>

Die XML-Knoten können dann beispielsweise wie folgt über Datamodel-Attribute verknüpft werden:

...
document Doc
{
  doccursor DocCur
  {
    .dataselect "..prize";
    .dataselect[.Winner]    ".winner";
    .dataselect[.Year]      ".";
    .dataselect[.Discovery] "merit";
    .dataselectattr[.Year]  "year";
    .dataselecttype[.Year]  integer;
    .dataselectcount[.Year] integer;
  }
}
...

Verfügbarkeit

Ab IDM-Version A.06.01.b

Siehe auch

Attribute .dataselectattr[attribute], .dataselectcount[attribute] und .dataselecttype[attribute]