2011-01-24 10 views
1

私は現在、次のXSLTコードを使用して、facebook、linkedin、twitterのアイコンをXLMのメンバーデータ彼らはfacebookを持っていることを示しています(つまり、facebook要素が空でない場合)。 InDesign CS5の出力にXSLTを出力して(HTMLに出力しない)、画像に対応する/ユニークなFacebookのURLを自動的に割り当てる方法を教えてください。InDesign CS5に配置するXSLTの画像にURLハイパーリンクを動的に割り当てます。

<?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> 

とXLM:

おかげ

ここでは、XSLTコード(私は現存するURLがある場合は、FacebookやTwitterとリンクされたアイコン画像を与えるようになった)であります

<?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

facebookの画像は同じですが、各メンバーのデータには、XLMのfacebook要素に異なる/固有のURL、つまりwww.facebook.com/abc、www.facebook.com/xyzなどが含まれていることにご注意ください。目標はFacebookのアイコンが表示されていることです(既に動作しています)。対応するURLにはwww.facebook.com/abcなどが割り当てられているので、PDFにエクスポートするとライブリンクになります。ありがとう。 – Tom

+0

可能な限り完全なXML文書と、作成したいと思う完全な(可能な限り最小限の、かつ関連性の高い)結果を提供してください。 Withouthこれらのあなたは手続き的な定義を持っていません。 –

+0

こんにちはDimitre、だけでなく、より完全なXSLのXMLドキュメントが追加されました。 Thxはまだあなたが知ることができるように学びます。 XSLの他の部分(上部など)に他の編集を必要とするコードを提供する予定の場合は、それらも同様に説明できますか?ありがとう! – Tom

答えて

0

あなたの要素に対してifする必要はありません - これはあなたのためのテンプレートを処理します:

<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> 

あなたのサンプルXMLに望ましい出力を追加することができます...例えば、<email />要素で何が起こるべきか明確ではありません。

関連する問題