Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: Sebastianh am 02.07.09 - 14:24:54

Titel: Java Pendant zu NotesXSLTransformer?
Beitrag von: Sebastianh am 02.07.09 - 14:24:54
Hallo zusammen,

wie der Thementitel schon erraten lässt, bin ich auf der Suche nach einer Javaklasse die mir dieselben Funktionalitäten bereitstellt wie die LotusScriptklasse NotesXSLTransformer.
(Es geht immer noch darum, dxl zu html zu transformieren)

Jemand eine Ahnung?

Grüße,

Sebastian
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: jBubbleBoy am 02.07.09 - 15:03:12
http://de.wikipedia.org/wiki/XSL_Transformation

Da sind alle gängigen Tools aufgelistet, nur um aus DXL --> HTML zu machen brauchst du eine beschreibende XSLT-Datei, habt ihr die schon?
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: Sebastianh am 02.07.09 - 16:03:11
hm, Danke. Aber ich dachte eigentlich mehr an ein Boardmittel in der NotesAPI.
(wenn es sowas für LS gibt, warum dann nicht auch für Java?)
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: Sebastianh am 09.07.09 - 13:41:55
Bin jetzt dabei, mir eine eigene xsl zu basteln, die ich dann mit den javaeigenen Werkzeugen auf die dxl-Dateien anwenden kann. Allerdings frag ich mich grad, wie ich mit xsl den Wert eines Attributs eines Elements überprüfe. Folgender Code funktioniert nicht:
Code
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns="http://www.w3.org/TR/REC-html40">

<xsl:output method="html"/>

<xsl:template match="/">

<html>
  <xsl:apply-templates/>
</html>

</xsl:template>

<xsl:template match="//document/item">
	<xsl:if test="/@name='Body'">
		<body>
			<p>HALLO</p>
		</body>
	</xsl:if>
</xsl:template>

Das hat zwar nichts direkt mit Notes/Domino zu tun, trotzdem jemand eine Idee?
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: jBubbleBoy am 09.07.09 - 14:19:00
XSLT ist ein echt hartes Brot wenn man das zum ersten mal macht ;)
Sehr viel kenne ich mich damit auch nicht aus, aber denke es müsste so aussehen:
Code
<xsl:template match="document/item">
	<xsl:if test="@name='Body'">
		<body>
			<p>HALLO</p>
		</body>
	</xsl:if>
</xsl:template>

Wenn DU HTML erzeugen willst würde ich das Dokument in ein RT-Feld rendern, welches als Mime-Typ HTML hat, ist vielleicht einfacher.
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: Sebastianh am 09.07.09 - 14:21:19
Danke, inzwischen habe ich:
Code
<xsl:template match="item[@name='Body']">

was auf jeden Fall matcht. Das mit dem rendern in RT werd ich doch glatt mal ausprobieren. Ist aktuell doch irendwie sehr mühsam, einen Fuss an die Erde zu bekommen.
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: Sebastianh am 09.07.09 - 16:11:15
nocheinmal eine Frage zu XSLT.

Wenn ich im dxl-Code ein "Item"-Tag habe, das ein "par"-Kind hat, das "par"-Kind kann aber auch an anderen Stellen auftauchen, warum matcht dann folgender Code nicht auf <par>?

Code
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns="http://www.w3.org/TR/REC-html40">

<xsl:output method="html"/>
<xsl:template match="/">
	<html>
	<xsl:template match="item[@name='Body']">
		<body>
		<xsl:apply-templates/>
		</body>
	</xsl:template>
	</html>
</xsl:template>
<xsl:template match="//par">
	<p>
		<xsl:apply-templates/>
	</p>
</xsl:template>
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: flaite am 10.07.09 - 11:11:45
Dir fehlen in dem XPath der Namespace. Ziemlich sicher.
Google Query: XPath Namespace
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: Sebastianh am 15.07.09 - 10:18:38
heisst, ich müsste so etwas machen wie:

Code
<xsl:template match="xsl://par">
...

?
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: Sebastianh am 15.07.09 - 10:24:59
ok, ich habs, super, Danke!
Code
<xsl:template match="//notes:par" xmlns:notes="http://www.lotus.com/dxl">
   <xsl:text>
      ...
   </xsl:text>
</xsl:template>
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: flaite am 15.07.09 - 12:27:52
Genau.
Du die namespace declaration aber auch weiter oben vornehmen.
Code
<xsl:stylesheet version="1.0"
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns="http://www.w3.org/TR/REC-html40"
  xmlns:notes="http://www.lotus.com/dxl">

Dann sollte im match das funktionieren:
Code
<xsl:template match="//notes:par">

Wenn du in einem Stylesheet mehrmals auf den notes namespace zugreifst, ist das einfacher.

Gruss Axel
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: Sebastianh am 16.07.09 - 14:11:57
nochmal Danke, Pitiyankee. Je größer die xsl-Datei wird, desto angenehmer die Ersparnis.
Inzwischen bin ich dabei ein template für <table> zu implementieren, allerdings gibt es da meinerseits wieder einige Fragen. Mein zu transformierender Dxl-Code hat folgende Form:

Code
<table user4spacing="true" widthtype="fitmargins" cellborderstyle="ridge" columnspacing="0.0278in" refwidth="20.1111in" 
minrowheight="0" rowspacing="0" cellbordercolor="none" colorstyle="none" leftmargin="1in" rightmargin="22.0in" rowdisplay="all" 
outsidewrap="false" insidewrap="false" direction="lefttoright">
<tablecolumn width="99.75%" sizetofit="false"/>
<tablecolumn width="0.25%" sizetofit="false"/>
<tablerow>
<tablecell bgcolor="#71b2cf" borderwidth="0px" rowspan="1" columnspan="1" rowheader="false" columnheader="false" transition="none">

Jetzt gibt es hier einige Attribute, die mir gar nichts sagen (bzw. deren Entsprechungen in HTML mir nicht bekannt sind). Ist es möglich an so eine Art DXL-Referenz zu kommen, in der alles beschrieben ist? Oder kann mir hier jemand sagen, was genau es mit outsidewrap, insidewrap, colorstyle, refwidth, rowspan, columspan und transition auf sich hat? Natürlich sind viele der Namen sprechend, aber die exakte Definition wäre schon nicht verkehrt. Ebenso die Einheiten, insbesondere die Einheit "in". Sind das Inch? Kann ich die in Pixel umrechnen? Fragen über Fragen.
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: flaite am 16.07.09 - 23:40:09
Mir ist keine dxl Referenz bekannt.
Du kannst es dir (mühsam) erschliessen, wenn du die Gestaltung der Tabelle im Designer änderst und dir die Ergebnisse im DXL anschaust.

Gruß Axel
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: Sebastianh am 18.07.09 - 13:02:06
"mühsam" ist hier wohl die richtige Wortwahl. Das dauert ja ne halbe Ewigkeit, wenn man das so realisieren will. Gibt es wirklich keine offiziellen Dokumente zur Struktur von dxl Seitens IBM?
Titel: Re: Java Pendant zu NotesXSLTransformer?
Beitrag von: pram am 18.07.09 - 16:17:08
Im Notes-Verzeichnis liegt eine DTD Datei rum, da sind ist der Aufbau der DXL-Datei spezifiziert.