Smarte Helfer selbst gemacht

Die neuen SmartTags in Office XP können im Alltag ein hervorragendes, zeitsparendes Hilfsmittel sein. InfoWeek zeigt, wie Sie die mitgelieferte Funktionalität erweitern.

Artikel erschienen in Swiss IT Magazine 2001/37

     

Eines der am stärksten beworbenen Features von Microsofts Office-Version XP sind die sogenannten SmartTags. Diese "intelligenten" Funktionen erkennen in Word-Dokumenten und in Excel-Tabellen Schlüsselwörter und bieten in einem Kontextmenü Optionen an, die im Zusammenhang mit diesen Schlüsseln von Bedeutung sein könnten.



Mit den mit Office gelieferten SmartTags erkennt Word beispielsweise einen Namen, zu dem es im Kontextmenü Links auf die Adresse, die E-Mail-Adresse oder auch eine Website anbietet. Die Daten dazu holt das Programm aus dem Personal Information Manager Outlook. Diese SmartTag-Gruppe nennen wir hier Informations-SmartTags.




Unspektakulärer, aber ebenfalls als SmartTag gelöst sind in Word Funktionen, die nach einem Copy&Paste-Vorgang verschiedene Formatierungsoptionen anbieten oder nach einer AutoKorrektur nachfragen, ob der Vorgang korrekt gewesen ist oder ob der Anwender künftig lieber darauf verzichtet. Diese zweite SmartTag-Gruppe wollen wir Funktions-SmartTags nennen.



Ähnlich bei Excel: Dieses ist (zumindest in der amerikanischen Version) in der Lage, einschlägige Börsenkürzel zu "verstehen" - im Kontextmenü erscheinen Links zur Firma, zu weiterführenden Informationen und zu den aktuellen Börsenkursen. Auch die Excel-SmartTags übernehmen profanere Aufgaben, indem sie etwa nach Fehlern in Formeln forschen oder das AutoAusfüllen von Zellen anbieten.



Mit den Informations-SmartTags eröffnen die Office-Anwendungen neue Wege, um auf Informationen zuzugreifen, die auf dem eigenen Computer, aber auch irgendwo im Internet gespeichert sind. Die wenigen in Office bereits integrierten Informations-SmartTags dienen dabei als Beispiel - ihre wahre Macht entfalten die intelligenten Helferlein aber erst, wenn man eigene Tags programmiert. Die Zahl der möglichen Einsatzbereiche tendiert nämlich gegen unendlich, nur die Phantasie (und allenfalls der erforderliche Entwicklungsaufwand) setzt Grenzen.



Die Korrektur-, Formatier- und weiteren funktionalen SmartTags sind übrigens sowohl in Word als auch in Excel automatisch aktiviert - sie lassen sich auch nicht ausschalten, weil sonst wesentliche Teile der neuen Funktionalität der Office-XP-Suite wegfallen würden.



Anders die Informations-SmartTags: Diese sind nach der Installation zunächst deaktiviert und müssen explizit eingeschaltet werden. Dazu öffnet man in Word wie in Excel über das Menü Extras die AutoKorrektur-Optionen und aktiviert im Register SmartTags die beiden Schaltkästchen Text mit SmartTags versehen und SmartTag-Aktionsschaltflächen anzeigen.


Einfache Programmierung per XML

Grundsätzlich lassen sich simple SmartTags, die etwa zu bestimmten Stichwörtern weiterführende Informationen aus dem Internet anbieten, auf einfachste Weise erstellen. Es genügt, eine entsprechende Liste als XML-Datei zu schreiben, die die Schlüsselwörter mit den zugehörigen Hyperlinks verknüpft.



Ein (zugegebenermassen sehr gesuchtes) Beispiel: Nehmen wir an, dass in einer Firma Mitarbeiter beschäftigt werden, die wenig Ahnung von PCs und deren Komponenten haben, die sich aber (beispielsweise in Rechnungen) ständig mit Fachbegriffen wie RAM, SCSI und ähnlichem herumschlagen müssen. Die Mitarbeiter wollen mit der Zeit wissen, was diese Abkürzungen bedeuten und wie die Technologien funktionieren. Als Chef dieser Firma, die Office XP einsetzt, hat man nun mehrere Möglichkeiten: Man kann sich selber schlau machen und den Angestellten die Technik erklären. Alternativ greift man auf externe Lehrer zurück. Oder man schreibt eine einfache SmartTag-Liste, die auftaucht, sobald die entsprechenden Abkürzungen geschrieben werden, und Links auf passende Informationsangebote im Internet bereithält.




Derartige XML-SmartTag-Listen lassen sich in jedem beliebigen Texteditor erstellen, beispielsweise mit dem Windows-Notepad. Wichtig ist allerdings zweierlei: Einerseits muss die Datei zwingend mit der Endung .xml versehen sein. Wurde sie mit dem Windows-Notepad erstellt, ist es deshalb manchmal nötig, nach dem Speichern die Dateiendung über den Windows-Explorer zu ändern. Andererseits müssen sämtliche Office-XP-Anwendungen geschlossen sein, wenn man die Datei in das SmartTag-Verzeichnis speichert oder verschiebt. Andernfalls ist das korrekte Funktionieren offenbar nicht gewährleistet.



Das eben angesprochene SmartTag-Verzeichnis findet sich unter ProgrammeGemeinsame DateienMicrosoft SharedSmart TagLists. Im allgemeinen befindet sich der Ordner auf der Systempartition (C:), selbst wenn Office auf einer anderen Partition installiert wurde.



Sobald man nun eines der Worte in der Liste von Zeile 8 in Word eintippt, wird es von einer violetten, gepunkteten Linie unterstrichen. Führt man die Maus darüber, erscheint die SmartTag-Aktionsschaltfläche, ein Klick darauf bringt das Kontextmenü hervor. Hier kann man nun die Links anklicken, worauf in einem Browserfenster die entsprechende Website angezeigt wird.



In Excel funktioniert das gleichermassen, allerdings wird das Wort nicht unterstrichen. Statt dessen macht ein kleines violettes Dreieck in der unteren rechten Zellenecke auf den SmartTag aufmerksam. Wichtig zu erwähnen ist noch, dass SmartTags in gewissen Fällen auf Gross- und Kleinschreibung achten: In unserem Beispiel ergeben RAM und ram zwar dasselbe, bei Namen dagegen werden Hans Müller und hans müller nicht gleich behandelt.




Simple Syntax

Grundsätzlich handelt es sich beim Code um ein normales XML-Dokument mit einer speziellen Syntax, die Microsoft für SmartTags determiniert hat. In der ersten Zeile werden entsprechend das Root-Element und der Namensraum für SmartTags definiert. FL wird dabei als Alias für den langen Ausdruck "urn:schemas-microsoft-com:smarttag:list" verwendet, der an jedem XML-Anfangs- und -Schluss-Tag zwingend erforderlich ist.



In Zeile 2 beginnt die Beschreibung des SmartTag. Zunächst wird ein Name für die Funktion angegeben, der später in der Übersicht der aktiven SmartTags im entsprechenden Dialogfeld der AutoKorrektur-Optionen verwendet wird.




Die Zeile 3 spezifiziert die "LocaleIDs" und damit die Sprachen, in denen die Schlüsselwörter des SmartTag erkannt werden. Hier ist darauf zu achten, dass die in Word normalerweise gebrauchte Sprache aufgeführt wird, andernfalls nützt der SmartTag nichts. Im Beispiel ermöglichen wir die Erkennung der Schlüsselwörter in Deutsch (1031), US-Englisch (1033) sowie Schweizerdeutsch (2055). Will man den SmartTag unter jeder beliebigen Sprache erkennbar machen, benutzt man die Codes 0 oder * oder lässt die Zeile ganz weg.



Zeile 4 enthält eine Beschreibung des SmartTag. Darauf folgt die Definition des SmartTag-Typs, der als namespaceURI#tagname spezifiziert wird und einen eindeutigen Tagnamen enthalten muss, im Beispiel hardware#terms.



Danach beginnt die Beschreibung des Kontextmenüs, das erscheint, wenn der SmartTag angeklickt wird. Zunächst erhält dieses einen Titel (Zeile 6), dann folgt die Liste mit den Schlüsselwörtern (Zeilen 7-9). Die Liste kann dabei eine grössere Anzahl von Schlüsseln beinhalten, die durch Kommas getrennt sein müssen.



Darauf folgen die Aktionen, die im Kontextmenü für die Schlüsselwörter angeboten werden sollen. In unserem Beispiel sind das zwei Links, der eine auf eine Site mit Akronym-Erklärungen, der andere auf eine Enzyklopädie. Die Aktionen bestehen im Detail aus einer eindeutigen ID, einem Titel resp. dem anzuzeigenden Text sowie der zugehörigen URL.



Die Aktionen im Beispiel beinhalten zwei Besonderheiten. Zum einen wird in den Zeilen 12 und 16 der jeweils erste Buchstabe des Titels mittels & (dem XML-Kürzel für das kaufmännische Und) als Menüpunkt gekennzeichnet - der Anwender kann die Aktion anklicken oder aber den entsprechenden Buchstaben tippen, um die Aktion auszuführen.



Zum anderen hat man als Programmierer die Möglichkeit, das Schlüsselwort als Parameter an die URL zu übergeben, was in beiden Beispiel-URLs zu sehen ist. Dazu verwendet man die Variable {TEXT}. Natürlich muss man sich dabei an die von der entsprechenden Website verwendete Syntax halten - am besten besucht man dazu die Site, macht eine Abfrage und kopiert darauf die URL der dynamisch generierten Seite in den XML-Code. Danach wird die Abfragevariable durch {TEXT} ersetzt.



Schliesslich ist zu beachten, dass auch in URLs von dynamischen Abfragen häufig kaufmännische Und-Zeichen (&) verwendet werden. Diese müssen in den URLs im XML-File natürlich in den entsprechenden Code & übersetzt werden. Auch dies ist im Beispiel zu sehen.




SmartTags updaten

Damit ist allerdings die Funktionalität der Informations-SmartTags noch nicht erschöpft. Die XML-Listen lassen sich nämlich - nach entsprechender Vorbereitung - übers Internet oder Intranet dynamisch updaten. Auf diese Weise könnte etwa der Patron aus dem obigen Beispiel seiner Liste ständig neue Schlüsselwörter oder Informationsangebote hinzufügen, ohne die eigentliche XML-Datei jedes Mal zu öffnen und neu zu verteilen.



Um diese Funktionalität zu nutzen, müssen sechs weitere Syntaxelemente in die Datei mit der XML-Liste integriert werden, die wir im folgenden vorstellen. Diese Zeilen gehören zwischen Zeile 4 und 5 unseres Beispiels respektive zwischen die Elemente description und smarttag type:




Dieser Code erklärt sich weitgehend von selbst. In Zeile 1 wird angegeben, ob die Datei aufdatiert werden kann und falls ja, ob das automatisch geschehen soll (Zeile 2). Beide Werte sind standardmässig false, was heisst, dass ein Update unmöglich ist, wenn man es nicht explizit vorsieht.



Wichtig ist Zeile 3 mit dem lastcheckpoint-Element: Der Wert dieses Elements definiert die Versionsnummer der XML-Liste - hat die Datei auf dem Server die höhere Nummer, wird sie automatisch aufdatiert, ansonsten nicht. Wenn das Update erfolgreich durchgeführt wurde, wird dieser Wert ebenfalls aktualisiert. Der Wert in Zeile 4 (lastupdate) spezifiziert, wann das letzte Update durchgeführt wurde. Üblicherweise ist sein Anfangswert in der XML-Datei Null. Beide Werte müssen übrigens aus einer positiven Ganzzahl (Integer) bestehen.



Zeile 5 schliesslich beinhaltet die Adresse des Webservers, auf dem nach dem Listen-Update gesucht werden soll. Dabei wird allerdings nicht das eigentliche Update-File angegeben, sondern eine Hilfsdatei, auf die wir im nächsten Abschnitt zurückkommen werden.



Im Gegensatz zu den vorangegangenen fünf Elementen, die zwingend vorhanden sein müssen, damit die Liste aufdatiert werden kann, ist das folgende Element updatefrequency optional. Hier wird in Minuten angegeben, wie oft die Liste aktualisiert werden soll. Fehlt dieses Element, greift der Standardwert 10'080 - das Update erfolgt dann alle sieben Tage.



Die so erweiterte Beispieldatei wird schliesslich wieder im üblichen SmartTag-Listenordner gespeichert, und zwar auf jedem PC, der über die entsprechende SmartTag-Funktionalität verfügen soll.




Webserver einrichten

Damit das automatische Update funktioniert, wird ausser den obigen Angaben in der XML-Liste auch eine Hilfsdatei benötigt, die auf dem Webserver gespeichert wird (vgl. Zeile 5 im obigen Script):



Auch in diesem XML-File kommt ein Alias zur Verwendung, nämlich FLUP als Ersatz für urn:schemas-microsoft-com:smarttags:listupdate. Ansonsten gibt es an dieser Datei wenig zu kommentieren: Der Wert des checkpoint-Elements (im Beispiel der Wert 4 in Zeile 2) muss grösser sein als der Wert des lastcheckpoint-Elements in der XML-Liste, damit das Update überhaupt heruntergeladen wird. Und im smarttaglistdefinition-Element (Zeile 3) muss die neue Datei spezifiziert sein, die auf den Anwendercomputer gesogen werden und das existierende File ersetzen soll. Dabei nimmt man sinnvollerweise denselben Namen, den die Datei ursprünglich hatte, um den Wildwuchs der XML-Listen in Grenzen zu halten.




Nun erstellt man auf dem Webserver ein virtuelles Verzeichnis namens SmartTags, das mindestens Leserechte und anonymen Zugang gewährleisten muss. Hierher wird darauf die eben erstellte Hilfsdatei gespeichert, und zwar unter dem Namen, den wir in der eigentlichen XML-Liste als hilfsdateiname.xml angegeben haben. Natürlich muss man auch hier in Zeile 3 den Namen der XML-Liste anpassen.



In dasselbe Verzeichnis wird nun nach jeder Änderung auch die Datei mit der XML-Liste kopiert. Um das gleich auszuprobieren, ändern wir im Beispiel die Zeile 8, indem wir der Wortliste die Abkürzung "DVD" hinzufügen.



Nehmen wir nun an, dass der im Beispiel verwendete Wert für die Update-Frequenz nicht geändert wurde, wird die alte XML-Liste nach fünf Minuten mit der neuen Version überschrieben. Effektiv in Word oder Excel zur Verfügung steht sie damit allerdings noch nicht. Zuerst muss nämlich noch die Applikation neu gestartet werden, damit die aktualisierten SmartTag-Werte und -Aktionen initialisiert werden können.




Komplexe SmartTags programmieren

Mit nur einem einfachen Texteditor wie Notepad lassen sich also bereits sehr hilfreiche SmartTags erstellen. Es geht allerdings auch komplexer, dynamischer und insbesondere interaktiver. Damit steigt jedoch auch der Aufwand, und vor allem sind dafür Programmierkenntnisse in Visual Basic oder C++ erforderlich.



Tatsächlich handelt es sich bei den mächtigeren Varianten der SmartTags nämlich um Dynamic Link Libraries (DLLs), die in einem Entwicklungssystem für COM-Objekte wie beispielsweise Visual Basic 6.0 Professional Edition geschrieben werden müssen. Die mit Office mitgelieferte, abgespeckte Variante der Entwicklungsumgebung, Visual Basic for Applications, unterstützt die Erstellung von DLLs nicht.




Informationen und Tutorials zur Programmierung von SmartTag-DLLs erhält man im Microsoft Developer Network. Ausserdem finden sich in der dortigen Download-Abteilung in der Sektion Office Solutions Development - Office Developer auch die Advanced SmartTag Tools sowie das SmartTag Software Development Kit. Während das erste Paket drei Werkzeuge für fortgeschrittene Programmierer enthält, bietet das SmartTag SDK 1.1 verschiedene Tools, Whitepapers und Codebeispiele sowohl zur Entwicklung von komplexen DLLs als auch von einfachen XML-SmartTags. Die Dokumentation des SDK sollte auch für weniger versierte Entwickler einigermassen verständlich sein.



Artikel kommentieren
Kommentare werden vor der Freischaltung durch die Redaktion geprüft.

Anti-Spam-Frage: Vor wem mussten die sieben Geisslein aufpassen?
GOLD SPONSOREN
SPONSOREN & PARTNER