Stileigenschaften über XPath

www.altova.com Alle erweitern/reduzieren Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  SPS-Datei: Darstellung > Arbeiten mit CSS-Stilen >

Stileigenschaften über XPath

Stile können Design-Komponenten mittels XPath-Ausdrücken zugewiesen werden. Auf diese Art können Stileigenschaftswerte aus XML-Daten oder dem XPath-Ausdruck selbst übernommen werden. Auch mit Hilfe der doc() Funktion von XPath 2.0/3.0 können Nodes in jedem XML-Dokument, auf das Zugriff besteht, adressiert werden. Es können nicht nur Stildefinitionen aus XML-Daten abgerufen werden; dank dieser Funktion können auch Stile auf Basis von Bedingungen gewählt werden, die von der Struktur oder dem Inhalt der XML-Daten abhängen. So können z.B. mit Hilfe der if...else Bedingung von XPath 2.0/3.0 je nach Position eines Elements in einer Sequenz zwei unterschiedliche Hintergrundfarben ausgewählt werden. Auf diese Art können bei Darstellung dieser Elemente als Zeilen einer Tabelle die ungerade nummerierten Zeilen in einer Hintergrundfarbe dargestellt werden, während die gerade nummerierten Zeilen in einer anderen Farbe dargestellt werden (siehe Beispiel unten). Die Darstellung kann auch je nach Inhalt eines Node variiert werden.

 

Stileigenschaften, für die XPath-Ausdrücke verwendet werden können

XPath-Ausdrücke können für die folgenden Stileigenschaften eingegeben werden:

 

Alle Eigenschaften in der Seitenleiste "Stil"
die Eigenschaftsgruppen Allgemein, Ereignis und HTML in der Seitenleiste "Eigenschaften"

 

Statischer Modus und dynamischer (XPath)-Modus bei Eigenschaftswerten

Bei den Eigenschaften, bei denen XPath-Ausdrücke aktiviert sind, stehen zwei Modi zur Verfügung:

 

Statischer Modus, wobei der Eigenschaftswert direkt in die Wertespalte der Seitenleiste eingegeben wird. So kann z.B. bei der Hintergrundfarbe einer Design-Komponente der Wert red direkt in die Seitenleiste eingegeben werden.
Dynamischer oder XPath-Modus, wobei ein XPath-Ausdruck eingegeben wird. Der Ausdruck wird zur Laufzeit ausgewertet und das Ergebnis wird als Wert der Eigenschaft eingegeben. So kann z.B. für die Hintergrundfarbe einer Design-Komponente der folgende XPath-Ausdruck eingegeben werden: /root/colors/color1. Der Inhalt des Node /root/colors/color1 wird zur Laufzeit abgerufen und als Wert der Eigenschaft "background-color" eingegeben.

 

Wechseln zwischen dem statischen und dem dynamischen (XPath)-Modus

Bei jeder Eigenschaft, für die XPath-Ausdrücke aktiviert sind, ist standardmäßig der statische Modus ausgewählt. Um bei einer Eigenschaft in den dynamischen (XPath) Modus zu wechseln, wählen Sie die Eigenschaft aus und klicken Sie in der Symbolleiste der Seitenleiste auf das XPath-Symbol (Abbildung unten).

 

EH_Styles_ViaXPath

 

Wenn für diese Eigenschaft ein statischer Wert vorhanden war, wird dieser nun gelöscht und der Modus wird auf dynamisch umgestellt. Das Dialogfeld "XPath-Ausdruck bearbeiten" wird angezeigt. In diesem Dialogfeld können Sie den XPath-Ausdruck für die Eigenschaft eingeben. Klicken Sie anschließend auf OK.

 

Nach Eingabe eines XPath-Ausdrucks für die Eigenschaft wird in der Wertespalte für diese Eigenschaft eine "XPath-Ausdruck bearbeiten" Schaltfläche angezeigt. Klicken Sie auf diese Schaltfläche um den XPath-Ausdruck anschließend zu bearbeiten. Wenn Sie wieder in den statischen Modus zurückwechseln möchten, klicken Sie auf das XPath-Symbol in der Symbolleiste. Daraufhin wird der XPath-Ausdruck gelöscht und die Eigenschaft wechselt in den statischen Modus zurück.

 

Anmerkung: Beachten Sie bitte zwei wichtige Punkte. 1.) Es ist immer jeweils nur ein Modus (statisch oder dynamisch) und der Wert/Ausdruck für diesem Modus aktiv. Alle Werte/Ausdrücke, die vorher im anderen Modus vorhanden waren, werden gelöscht; wenn Sie daher in den anderen Modus wechseln, wird in diesem Modus ein leeres Eingabefeld angezeigt. (Um zu einem vorher verwendeten Wert/Ausdruck zurückzugehen, verwenden Sie den Befehl Rückgängig.) 2.) Wenn Sie eine Eigenschaft nach dem Bearbeiten des SPS erneut auswählen, wird diese Eigenschaft in dem Modus geöffnet, in dem sie sich zuvor befunden hat.

 

Erstellen und Bearbeiten der XPath-Definition

Die XPath-Definition wird im Dialogfeld "XPath-Ausdruck bearbeiten" erstellt und bearbeitet. Dieses Dialogfeld kann auf zwei Arten aufgerufen werden:

 

Jedes Mal, wenn Sie vom statischen Modus in den dynamischen Modus einer Eigenschaft wechseln (durch Klicken Auf das XPath-Symbol in der Symbolleiste der Seitenleiste), wird das Dialogfeld "XPath-Ausdruck bearbeiten" angezeigt. Sie können den XPath-Ausdruck nun erstellen. (Beachten Sie: Wenn Sie auf die Symbolleisten-Schaltfläche klicken, wenn Sie sich bereits im dynamischen Modus befinden, wechseln Sie wieder in den statischen Modus; das Dialogfeld "XPath-Ausdruck bearbeiten" wird in diesem Fall nicht aufgerufen.)
Das Dialogfeld "XPath-Ausdruck bearbeiten" wird auch angezeigt, wenn Sie im Wertefeld einer Eigenschaft, für die bereits ein XPath-Ausdruck definiert wurde, auf die Schaltfläche "XPath-Ausdruck bearbeiten" klicken. Das Dialogfeld enthält den bereits für diese Eigenschaft definierten XPath-Ausdruck, den Sie nun bearbeiten können.

 

Nachdem Sie den XPath-Ausdruck in das Eingabefeld eingegeben haben, klicken Sie zum Fertigstellen auf OK.

 

Von einem XPath-Ausdruck zurückgegebene Werte

Die wichtigsten Vorteile der Verwendung von XPath-Ausdrücken zum Definieren eines Eigenschaftswerts sind, dass: (i) der Eigenschaftswert aus einer XML-Datei übernommen werden kann (anstatt direkt eingegeben werden zu müssen); und/oder (ii) ein XPath-Ausdruck eine Bedingung zum Inhalt oder der Struktur des gerade verarbeiteten XML-Dokuments überprüfen kann und dann entsprechend dem Resultat einen Wert auswählen kann. XPath-Ausdrücke geben Werte in den folgenden beiden Kategorien zurück:

 

XML-Node-Inhalt

Der XPath-Ausdruck kann für folgende Nodes verwendet werden: (i) Nodes in dem vom SPS verarbeiteten XML-Dokument oder (ii) Nodes in jedem XML-Dokument, auf das Zugriff besteht. So würde z.B. mit dem Ausdruck Format/@color das color-Attribut des Child-Elements Format des Kontext-Node aufgerufen. Der Wert des color-Attributs wird als der Wert der Eigenschaft definiert, für die der XPath-Ausdruck definiert wurde. Ein Node in einem anderen XML-Dokument kann mit Hilfe der doc() Funktion von XPath 2.0 aufgerufen werden. So würde z.B. mit dem Ausdruck doc('Styles.xml')//colors/color-3 der Wert des Elements color-3 im XML-Dokument Styles.xml abgerufen und als Wert der Eigenschaft definiert, für die der XPath-Ausdruck definiert wurde.

 

XPath-Ausdruck

Der Wert der Eigenschaft kann aus dem XPath-Ausdruck selbst stammen und nicht aus dem XML-Dokument. So können Sie z.B. für ein Element, das als Zeile in einer Tabelle ausgeben wird, je nachdem, ob es sich um eine gerade oder ungerade nummerierte Zeile handelt, unterschiedliche Hintergrundfarben definieren. Dazu könnten Sie den folgenden XPath 2.0/3.0-Ausdruck verwenden: if (position() mod 2 = 0) then 'red' else 'green'. Beachten Sie, dass der Rückgabewert dieses Ausdrucks entweder der String red oder der String green ist. Dieser Wert wird auch als der Wert der Eigenschaft definiert, für die der XPath-Ausdruck definiert wurde. Im gerade erwähnten Beispiel wurden die Eigenschaftswerte als String Literale eingegeben. Alternativ dazu könnten Sie aus einem XML-Dokument kommen, z.B.: if (position() mod 2 = 0) then doc('Styles.xml')//colors/color-1 else doc('Styles.xml')//colors/color-2. Umgekehrt könnte es sich beim XPath-Ausdruck auch um einen ganz einfachen String wie z.B. 'green'handeln. Dies ist dasselbe, wie wenn der statische Wert green für die Eigenschaft eingegeben wird.

 

Einschränkungen

Die Funktion zur Eingabe von Stileigenschaften über XPath hat die folgenden Einschränkungen:

 

1.Bei der RTF-Ausgabe werden Farben von StyleVision in eine Tabelle im RTF-Dokument eingegeben. Diese Tabelle wird zum Zeitpunkt der Erstellung des  XSLT-for-RTF-Dokuments generiert (auch für die RTF-Vorschau) und enthält standardmäßig die 140 Standardfarben, die von den meisten Web Browsern unterstützt werden. Wenn Werte für Farbeigenschaften aus den XML-Daten oder dem XPath-Ausdruck abgerufen werden und es sich dabei nicht um eine der 140 Standardfarben handelt, wird die nächstbeste Standardfarbe verwendet. #FF0001 ist z.B. keine der 140 Standardfarben; daher wird der Wert #FF0000 (rot) verwendet.
2.Bei der RTF-, PDF- und Word 2007+-Ausgabe werden Werte, die für die Eigenschaft class aus den XML-Daten oder einem Literal im XPath-Ausdruck abgerufen werden, auf die folgenden Stilkomponenten angewendet: automatische Berechnungen, den Platzhalter (Inhalt), Absatz (Block)-Komponenten und Tabellenzellen.

 

 

 


© 2019 Altova GmbH