Berechnungen komplexer abgeleiteter Attribute
Auch wenn in diesem Lerntext nicht näher darauf eingegangen wird, bedeutet die Berechnung abgeleiteter Attribute häufig mehr als eine Verkettung statischer Zeichenfolgen mit Werten, die aus dem JET-Eingabemodell extrahiert werden. Derartige Bearbeitungen können häufig durch das Aufrufen von XPath-Funktionen in einem XPath-Ausdruck ausgeführt werden.
Angenommen, Sie erstellen eine E-Mail-Nachricht, die Benutzer darüber informiert, dass ein Account für sie mit ihrer E-Mail-Adresse als ID und einem generierten Kennwort erstellt wurde. Das generierte Kennwort besteht aus dem ersten Buchstaben des Vornamens plus dem Familiennamen; das Kennwort besteht ausschließlich aus Kleinbuchstaben. Die generierte E-Mail-Nachricht muss dieses Kennwort als Gedächtnisstütze für die Benutzer enthalten.
Die JET-XPath-Steuerkomponente stellt mehrere Funktionen zur Unterstützung bei dieser Task bereit. Die Funktion substring gibt einen Teil einer Zeichenfolge zurück, die Funktion concat verknüpft zwei oder mehrere Zeichenfolgen miteinander und die Funktion lowercase ist für den Wechsel zwischen Groß- und Kleinschreibung zuständig. Das folgende Codefragment verdeutlicht die Berechnung des möglichen abgeleiteten Attributs für das Kennwort im Element 'mailing':
{lower-case(concat(substring($mailing/@firstName,1,1), $mailing/@lastName))}JET umfasst die meisten XPath-Funktionen der Version 1.0; dies ist in der Kernfunktionsbibliothek für XPath-Spezifikationen der Version 1.0 definiert. Nur zwei Funktionen sind nicht implementiert: lang und id. JET stellt außerdem mehrere zusätzliche XPath-Funktionen bereit.
XPath-Pfadausdrücke filtern
In einigen Fällen sollten Sie XPath-Vergleichselemente zur Verarbeitung einer Teilmenge der Elemente anhand eines bestimmten Kriteriums verwenden. Ein Vergleichselement ist ein Ausdruck, den Sie auf einen Schritt in einem XPath-Ausdruck anwenden, um Elemente zu filtern, die diesem Schritt entsprechen. Bei einem Vergleichselement kann es sich entweder um einen booleschen Ausdruck oder um einen ganzzahligen Ausdruck handeln; in diesem Fall wird es als ein Index, für den ein Wert von 1 bis unendlich angegeben werden kann, in der Elementgruppe betrachtet. Vergleichselemente werden in eckige Klammern ([]) gesetzt.
In den folgenden Beispielen wird dieses Konzept verdeutlicht. Durch den folgenden Tag vom Typ <c:iterate> werden nur Elemente vom Typ 'mailing' verarbeitet, die ein Element vom Typ 'interest' enthalten:
<c:iterate select="$campaign/mailing[interest]" var="mailing">XPath konvertiert das Ergebnis des Vergleichselementausdrucks 'interest' in einen booleschen Wert; dabei wird die Kardinalität der Gruppe übereinstimmender Knoten getestet. Der Ausdruck entspricht dem folgenden Beispiel:
<c:iterate select="$campaign/mailing[count(interest) > 0]" var="mailing">Durch den folgenden Tag vom Typ <c:iterate> werden Elemente vom Typ 'mailing' verarbeitet, die 'Product1' als erstes Produkt angeben, an dem ein Benutzer interessiert ist:
<c:iterate select="$campaign/mailing[interest[1]/@code = 'Product1']" var="mailing">