2016-12-11 30 views
0

Моя цель - изменить цвет шрифта любого текста, который содержится в элементе с атрибутом и значением <li audience="beginner"></li>. В настоящее время я хочу сделать это в файле custom.xsl плагина Dita Open Toolkits PDF. Пользователь custom.xsl переопределит любые стили в common.xsl. Мой вопрос: как выбрать атрибут в теге атрибута?Как выбрать по атрибуту в Dita OTs custom.xsl

Custom.xsl

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:fo="http://www.w3.org/1999/XSL/Format" 
    version="2.0"> 
    <xsl:attribute-set name="li"> 
     <xsl:attribute name="color">red</xsl:attribute> 
    </xsl:attribute-set> 
</xsl:stylesheet> 

XML

<li audience="beginner" class="- topic/li ">This text should be blue</li> 
<li audience="expert" class="- topic/li ">This text should be red</li> 
+0

Это было бы намного проще решить в CSS. Рассмотрите возможность оставить выходной HTML как есть. – Tomalak

+1

Извините, что забыл упомянуть, что я преобразовываю этот XML в PDF. Custom.xsl в моем понимании - это CSS для перевода. –

+0

Вы не можете выбрать атрибут или что-либо еще в наборах атрибутов. Вы переопределяете шаблон для li, чтобы не использовать их или применять более конкретные совпадения с разными наборами. –

ответ

0

Критерии отбора для OT будет что-то вроде:

... 
    <xsl:template match="*[contains(@class,' topic/li ')]"> 
     <xsl:attribute name="color"> 
     <xsl:choose> 
      <xsl:when test="@audience="beginner">blue</xsl:when> 
      <xsl:when test="@audience="expert">red</xsl:when> 
      <xsl:otherwise>black</xsl:otherwise> 
     </xsl:choose> 
     </xsl:attribute> 
    ... (anything else you want to do with li) 
    </xsl:template> 
    ... 

Надеется, что это помогает.