2.2.1 fejezet, Kliens oldali XSLT
Beküldte pzoli - 2011, május 16 - 3:20du
Az XSLT paraméterezése meghatározó a kimenet generálásában. Fontos megemlíteni, hogy szintén beemelhető paraméterként XML dokumentum, ami megoldást nyújthat humán nyelvi elemek dinamikus leképezésénél. Így a feliratok, statikus elemek egy szótár XML-ben tárolhatók.
<?xml version="1.0" encoding='utf-8'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html" indent="yes"/> <xsl:param name="fielddefs"/> <xsl:param name="editable"/> <xsl:param name="target"/> <xsl:template match="/*"> <table width="100%"> <thead> <tr> <td align="right"> <xsl:element name="input"> <xsl:attribute name="type">button</xsl:attribute> <xsl:attribute name="value"><<</xsl:attribute> <xsl:attribute name="onClick">JComponent.client.getPage('<xsl:value-of select="name()"/>','<xsl:value-of select="$target"/>','priorpage');</xsl:attribute> </xsl:element> </td> <th align='center'> <xsl:value-of select="name()"/> </th> <td align="left"> <xsl:element name="input"> <xsl:attribute name="type">button</xsl:attribute> <xsl:attribute name="value">>></xsl:attribute> <xsl:attribute name="onClick">JComponent.client.getPage('<xsl:value-of select="name()"/>','<xsl:value-of select="$target"/>','nextpage');</xsl:attribute> </xsl:element> </td> </tr> </thead> <tbody> <tr> <td colspan="3"> <xsl:element name="table"> <xsl:attribute name="width">100%</xsl:attribute> <xsl:attribute name="id"><xsl:value-of select="name()"/></xsl:attribute> <thead> <tr> <xsl:if test="$editable='true'"> <th> </th> <th> </th> </xsl:if> <xsl:for-each select="$fielddefs/fields/field[@visible='true']"> <th><xsl:value-of select="label[@context='HUN']"/></th> </xsl:for-each> </tr> </thead> <tbody> <xsl:variable name="tablename" select="name()"/> <xsl:for-each select="item"> <xsl:element name="tr"> <xsl:if test="$editable='true'"> <td valign='top'> <xsl:element name="a"><xsl:attribute name="href">javascript:void(JComponent.client.deleteOne(<xsl:value-of select="position()"/>,'<xsl:value-of select="$tablename"/>'));</xsl:attribute> <img src="images/delrow.gif" border="0"/> </xsl:element> </td> <td valign='top'> <xsl:element name="a"><xsl:attribute name="href">javascript:void(JComponent.client.editOne(<xsl:value-of select="position()"/>,'<xsl:value-of select="$tablename"/>'));</xsl:attribute> <img src="images/edit.gif" border="0"/> </xsl:element> </td> </xsl:if> <xsl:variable name="row" select="./*"/> <xsl:for-each select="$fielddefs/fields/field[@visible='true']"> <xsl:variable name="fieldname" select="@name"/> <td valign='top'><xsl:value-of select="$row[name()=$fieldname]"/></td> </xsl:for-each> </xsl:element> </xsl:for-each> </tbody> </xsl:element> </td> </tr> </tbody> </table> </xsl:template> </xsl:stylesheet>
XML paraméter átadásakor fontos, hogy egy XML részfát egész dokumentumként kell átadni paraméterbe, és a részfa másolatát kell átadni.
function Container(owner, name){ this.init(owner); $.extend(this, new ActionDrivenObject(this, owner, name)); } Container.prototype = { init: function(owner){ this.className = 'Container'; this.containerGroup = owner; this.pages = new Array(); this.tableDefDoc = null; }, buildTarget: function(target){ }, getTableDefDoc: function(){ if (this.tableDefDoc == null) { var params = this.actions.getdescription.params; if ((params.descriptor != undefined) && (params.descriptor != null)) { var descriptor = this.actions.getdescription.params.descriptor.value; if ((descriptor != undefined) && (descriptor != null)) { var fieldDefs = $('containerdescriptor > fields', descriptor); if ((fieldDefs != null) && (fieldDefs.length > 0)) { this.tableDefDoc = this.createDocument(); var fieldsDef = null; fieldsDef = fieldDefs[0].cloneNode(true); this.tableDefDoc.appendChild(fieldsDef); } } } } return this.tableDefDoc; } }
- A hozzászóláshoz be kell jelentkezni