From FAQ Filemaker

Filemaker-avance: Pense-bête XSLT

Compilé par Pascal Magat sur le Forum

Petit récapitulatif XSLT en vrac à mettre de côté

pour le &:

&

une colonne : sans les quotes car le forum met un espace

<xsl:text disable-output-escaping="yes">'&nbsp;'</xsl:text>

entete avec image: (en passant l'ID de la fiche au template 'montemplate')

<td>
<div align="center">
<a>
<xsl:attribute name="href">
<xsl:call-template name="montemplate">
<xsl:with-param name="recordid" select="@record-id"/>
</xsl:call-template>
</xsl:attribute>
<img src="http://tonsite/modif.jpg" border="0"" />
</a>
</div>
</td>

fonction "si, alors" :

- on déclare une variable:

<xsl:variable name="mavar" select="fmrs:field[@name='rubriqueFMP']/fmrs:data" />
<xsl:choose>
<xsl:when test='$mavar != ""'> (on teste)
"fait un truc"
</xsl:when>
<xsl:when test='$mavar != ""'> (on teste)
"fait un autre truc"
</xsl:when>
<xsl:when test='$mavar != ""'> (on teste)
"fait encore un autre truc"
</xsl:when>
<xsl:otherwise>
"ou sinon va te coucher"
</xsl:otherwise>
</xsl:choose>

Gestion des cookies (il y a d'autres classes JS):

<script type="text/JavaScript">
<xsl:text disable-output-escaping="yes">
<![CDATA[
function getcookie(c_name)
{
if (document.cookie.length>0)
{
c_start=document.cookie.indexOf(c_name + "=")
if (c_start!=-1)
{
c_start=c_start + c_name.length+1
c_end=document.cookie.indexOf(";",c_start)
if (c_end==-1) c_end=document.cookie.length
return unescape(document.cookie.substring(c_start,c_end))
}
}
return ""
}
function setcookie(c_name,value,expiredays)
{
var exdate=new Date()
exdate.setDate(exdate.getDate()+expiredays)
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString())
}
]]>
</xsl:text>
</script>

enregistrer un cookie en cliquant sur un lien par exemple

<a href="xxx.xsl" onclick="java script:setcookie('username','',365)"> Entrée </a>

Récupérer le cookie:

<script type="text/JavaScript">
<xsl:text disable-output-escaping="yes">
<![CDATA[
username=getcookie('username');
document.write("<b>Bienvenue " + username + "</b>");// affiche le nom dans la page
]]>
</xsl:text>
</script>

Alternative: les sessions xslt

Pour obtenir les sessions (à mettre en haut des pages aprés les xml et xmlns:

<?xslt-cwp-buffer buffer-content="true" ?>

Création de la session:

<xsl:choose>
<xsl:when test="fmxslt:session_exists('masession')">
</xsl:when>
<xsl:otherwise>
<xsl:variable name="instantiating_session" select="fmxslt:create_session('masession')"/>
</xsl:otherwise>
</xsl:choose>

Enregistrer dans la session:

<xsl:variable name="a" select="fmxslt:set_session_object('masession', 'nom', $nomok)"/>
(ou $nomok est une variable déclarée précédement)

Mettre un objet de session

<xsl:value-of select="fmxslt:get_session_object('masession', 'nom')" />

Date en français :

<xsl:variable name="date_norm" select="$madate" />
<xsl:variable name="an" select="substring($date_norm, 7, 4)" />
<xsl:variable name="mois" select="substring($date_norm, 1, 2)" />
<xsl:variable name="jour" select="substring($date_norm, 4, 2)" />
<xsl:variable name="date_complete" select="concat($jour, '/', $mois, '/', $an)" />
<xsl:value-of select="$date_complete" />

Un head qui va bien

<head>
<meta http-equiv="Cache-Control" content="no-cache"/>
<title>xxx</title>
<style type="text/css" media="screen">
<xsl:comment>
@import url("http://tonsite.com/tafeuille.css");
</xsl:comment>
</style>
</head>

Gestion des token pour transmettre des valeurs de page en page (fonctionne en POST aussi)

Création du token par formulaire:

<input name="-token.mag" type="hidden">
<xsl:attribute name="value">
<xsl:value-of select="fmrs:field[@name='rubriqueFMP']/fmrs:data" />
</xsl:attribute>
</input>

ou par lien:

<xsl:variable name="adresse" select="concat('page.xsl?-lay=modele&-token.mag=',$nom,'-findall')" />
<a href="{fmxslt:session_encode_url($adresse)}"> cliquez </a>

attribuer un token à une variable

<xsl:variable name="mavar" select="$request-query/fmq:query/fmq:parameter[@name = '-token.mag']" />

afficher le token

<xsl:value-of select="$request-query/fmq:query/fmq:parameter[@name = '-token.mag']"/>

repasser le token par form:

<input name="-token.mag" type="hidden">
<xsl:attribute name="value">
<xsl:value-of select="$request-query/fmq:query/fmq:parameter[@name = '-token.mag']"/>
</xsl:attribute>
</input>

à suivre ...

Vous pouvez contribuer ....

Récupéré sur http://www.cqfd-fmp.fr/index.php?n=Filemaker-avance.Pense-bete-XSLT
Page mise à jour le 20 octobre 2008 à 14h24