2011-01-24 1 views
1

J'utilise actuellement le code XSLT suivant pour placer avec succès/dynamiquement une icône facebook, linkedin et twitter, en utilisant un conditionnel, si les données de membre dans XLM montre qu'ils ont facebook (c'est-à-dire si l'élément facebook n'est pas vide). Comment puis-je obtenir la sortie XSLT vers InDesign CS5 (ne pas sortir en html) pour assigner automatiquement l'URL facebook correspondante/unique à l'image? MerciAttribuer dynamiquement des liens hypertexte URL à une image dans XSLT, à placer dans InDesign CS5

Voici le code XSLT (que je suis arrivé à donner les images icône pour facebook, twitter et Linked in, s'il y a une URL existe):

<?xml version="1.0"?><!DOCTYPE xsl:stylesheet [ 
<!ENTITY nbsp "&#160;"> 
<!ENTITY mdash "&#8212;">]> 

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:output method="xml" indent="no"/> 

<xsl:template match="/"> 
<memberdata> 
<xsl:for-each select="memberdata/memberinfo"> 
<xsl:sort select="SortKey"/> 

<memberdata> 


<xsl:if test="twitter[.!='']"> 
<twitter><xsl:attribute name="href">file://logos/twitter.jpg</xsl:attribute></twitter> 
</xsl:if> 

<xsl:if test="facebook[.!='']"> 
<facebook><xsl:attribute name="href">file://logos/facebook.jpg</xsl:attribute></facebook> 
</xsl:if> 

<xsl:if test="linkedin[.!='']"> 
<linkedin><xsl:attribute name="href">file://logos/linkedin.jpg</xsl:attribute></linkedin> 
</xsl:if> 


</memberdata> 

</xsl:for-each> 

</memberdata> 

</xsl:template> 
<xsl:template match="twitter"> 
</xsl:template> 
<xsl:template match="facebook"> 
</xsl:template> 
<xsl:template match="linkedin"> 
</xsl:template> 

</xsl:stylesheet> 

et XLM:

<?xml version="1.0"?> 
<memberdata xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance"> 
<memberinfo> 

<email>[email protected]</email> 
<facebook>http://www.URL1a.com</facebook> 
<linkedin>http://www.URL1b.com</linkedin> 
<vimeo>http://www.URL1c.com</vimeo> 

</memberinfo> 
<memberinfo> 

<email>[email protected]</email> 
<facebook>http://www.URL2a.com</facebook> 
<linkedin>http://www.URL2b.com</linkedin> 
<vimeo>http://www.URL2c.com</vimeo> 

</memberinfo> 
</memberdata> 
+0

Veuillez noter que même si l'image facebook est la même, chaque donnée de membre peut contenir des URL différentes/uniques dans l'élément Facebook de XLM, à savoir www.facebook.com/abc, www.facebook.com/xyz, etc. L'objectif est d'afficher l'icône facebook (qui fonctionne déjà bien), mais aussi de l'afficher avec l'URL correspondante, c'est-à-dire www.facebook.com/abc, de sorte que lorsque nous exportons en PDF c'est un lien direct. Merci. – Tom

+0

Veuillez fournir un document XML complet (mais aussi minime que possible) et le résultat complet (aussi minime que possible et toujours pertinent) que vous souhaitez obtenir. Sans cela, vous n'avez pas de définition précise. –

+0

Hi Dimitre, vient d'ajouter le document XML ainsi qu'un XSL plus complet. Thx apprend toujours comme vous pouvez le dire. Si vous voulez fournir un code qui nécessite d'autres modifications à toute autre partie du XSL (comme la partie supérieure, etc.), pouvez-vous les décrire également? Merci! – Tom

Répondre

0

vous n'avez pas besoin de if pour vos éléments - ce manipulera le modèle pour vous:

<xsl:template match="twitter[.!='']"> 
    <twitter> 
     <xsl:attribute name="href">file://logos/twitter.jpg</xsl:attribute> 
    </twitter> 
</xsl:template> 

<xsl:template match="facebook[.!='']"> 
    <facebook> 
     <xsl:attribute name="href">file://logos/facebook.jpg</xsl:attribute> 
    </facebook> 
</xsl:template> 

<xsl:template match="linkedin[.!='']"> 
    <linkedin> 
     <xsl:attribute name="href">file://logos/linkedin.jpg</xsl:attribute> 
    </linkedin> 
</xsl:template> 

Peut-être que vous pouvez ajouter la sortie désirée pour votre échantillon xml ... on ne sait pas ce qui devrait arriver avec <email /> éléments par exemple.

Questions connexes