Динамическое назначение гиперссылок URL на изображение в XSLT для размещения в InDesign CS5 - PullRequest
1 голос
/ 24 января 2011

В настоящее время я использую следующий XSLT-код для успешного / динамического размещения значка facebook, linkedin и twitter, используя условное условие, если данные участника в XLM показывают, что у них есть Facebook (т.е. если элемент facebook не пуст) , Как получить вывод XSLT в InDesign CS5 (не выводить в html), чтобы автоматически назначать соответствующий / уникальный URL-адрес facebook для изображения? Спасибо

Вот код XSLT (который я получил, чтобы дать изображения иконок для Facebook, Twitter и ссылки, если 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:

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

<email>email1@abc.com</email>
<facebook>http://www.URL1a.com</facebook>
<linkedin>http://www.URL1b.com</linkedin>
<vimeo>http://www.URL1c.com</vimeo>

</memberinfo>
<memberinfo>

<email>email2@abc.com</email>
<facebook>http://www.URL2a.com</facebook>
<linkedin>http://www.URL2b.com</linkedin>
<vimeo>http://www.URL2c.com</vimeo>

</memberinfo>
</memberdata>

1 Ответ

0 голосов
/ 29 января 2011

Вам не нужно 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 /> элементами, например.

...