Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: Mark³ am 30.08.07 - 11:27:15

Titel: Maske im Web dynamisch ändern
Beitrag von: Mark³ am 30.08.07 - 11:27:15
Ich benötige im Web eine Funktion, um ein Dokument als XML mit Stylesheet auszugeben. Zur Erzeugung des Dokuments habe ich einen Agenten, der aus einem Dokument über DocumentContext XML-Code erzeugt.
Dazu nutze ich einen WebQueryOpen-Agenten (siehe http://www.codestore.net/store.nsf/unid/BLOG-20070821 ) und eine Maske, die als Content-Type text/xml ausspuckt. Das Stylesheet habe ich als Page in meiner DB gespeichert, so dass ich eine schicke Darstellung bekomme, die auch gut zu drucken ist.
Um nun unterscheiden zu können, ob ich das Dokument klassisch als Notes-Dokument im Web anzeigen lassen möchte oder als XML-Dokument, habe ich folgende Masken-Formel in die Ansicht eingebaut:

Code
@If(@Contains(@UrlQueryString;"xml");"xml";"")

Damit kann ich nun einfach die Maske wechseln, indem ich den Query-String (also die URL, mit der ich das Dokument aufrufe), ergänze um
Code
&xml
oder auch
Code
&Form=xml
oder was mir so einfällt.

Ist das eine praktische Handhabung oder geht das ganze auch viel einfacher? Wenn ja, könnt ihr das Thema nach 'Tips und Tricks' verschieben, wenn nein, bitte ich um eure Vorschläge, wie es besser geht  8)
Titel: Re: Maske im Web dynamisch ändern
Beitrag von: Mark³ am 30.08.07 - 11:44:38
ich hab das noch etwas ausgefeilt. Mit der Form Formula
Code
@If(@Contains(@UrlQueryString;"OpenDocument");"xml";"")
öffnet sich nun die XML-Maske, wenn ich das Dokument anschaue. Will ich es aber editieren, gelange ich automatisch in die Notes-Maske  O0
Titel: Re: Maske im Web dynamisch ändern
Beitrag von: flaite am 30.08.07 - 12:44:01
Sieht gut aus.
Wobei ich schlechte Sachen mit über-Gebrauch von XML/XSLT gesehen habe. Leute haben mir erzählt wie flexibel und Trennung-von-Gestaltung-und-Content das doch ist. In der Praxis erinnerte es mich dann eher an Masochismus. Vielleicht hab ich auch einfach die falschen Projekte gesehen.  ;) Jedenfalls hab ich mir fest vorgenommen, innerlich immer bis 3 zu zählen, wenn ich einen dieser "Das-macht-man-heute-mit-xml"-Freaks begegne. Es ist eben ein sehr verboses Format und spätestens wenn Leute beginnen, ein paar gute Schübe xpath statements in ihre business Logik zu mixen, ist der Punkt erreich, an dem ich lachen muß. Ausser ich muß den Schei äh das flexible Design maintainen. Dann such ich mir nämlich den nächsten Baum, auf das der Kelch an mir vorübergeht. 

Ich benutze xml eigentlich nur für remoting/Integration (Webservices in Soap und POX) und natürlich zur Konfiguration in verschiedenen Zeugs (deployment Deskriptoren, ant, hibernate, spring, jsf).
Für Notes Agenten gibts eine Möglichkeit den content-type von text/html auf text/xml umzustellen.  Dann erzeugt Domino auch nicht mehr die HTML-Tags (schau später nach, wie das genau geht). Das muss benutzt werden, wenn Domino als Producer Service  Endpoint benutzt wird.   
Für die Darstellung von Notes-Masken im Web gibts aber afaik diese Möglichkeit nicht.

Zur Zeit hab ich ein Projekt zur Konsumption für irgendwas von factiva.com. Bislang kann mir keiner sagen, welchen Service wir denn nun nehmen, aber ich hab schon 3 Lösungsansätze rausgeschickt  ;D

In JavaScript/Ajax tendier ich deutlich zu JSON.
Titel: Re: Maske im Web dynamisch ändern
Beitrag von: Mark³ am 30.08.07 - 13:36:52
ich benutze hier aus verschiedenen Gründen XML:

In einer Notes-Maske oder Seite kann man auch den Content-Type auf text/xml (oder was immer man möchte) einstellen. Genau das tue ich hier, damit ich kein HTML von Domino generiert bekomme.