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:
<?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?
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:
<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.
Danke, inzwischen habe ich:
<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.
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>?
<?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>
heisst, ich müsste so etwas machen wie:
<xsl:template match="xsl://par">
...
?
ok, ich habs, super, Danke!
<xsl:template match="//notes:par" xmlns:notes="http://www.lotus.com/dxl">
<xsl:text>
...
</xsl:text>
</xsl:template>
Genau.
Du die namespace declaration aber auch weiter oben vornehmen.
<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:
<xsl:template match="//notes:par">
Wenn du in einem Stylesheet mehrmals auf den notes namespace zugreifst, ist das einfacher.
Gruss Axel
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:
<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.