Как добавить цвет в Div в XSL, когда цвет находится в документе XML - PullRequest
0 голосов
/ 04 октября 2018

У меня есть документ XSL 1.0 со следующим:

<div class="workgroup_title">
  <xsl:value-of select="./@name"/>
</div>

Мне нужно установить цвет для этого элемента.Цвет находится в файле XML

<abc.xyz.color>FF5733</abc.xyz.color>

Чтобы получить его, я использую это:

<xsl:value-of select="./abc.xyz.color"/>

Что бы я хотел сделать, это

<div class="workgroup_title" style="color:"#<xsl:value-of select="./abc.xyz.color"/>>
  <xsl:value-of select="./@name"/>
</div>

Это недопустимо.

Или:

<xsl:attribute style="color:">#<xsl:value-of select="./abc.xyz.color"/></xsl:attribute>

Но color не является одним из атрибутов, которые могут быть установлены таким образом.

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

Следующие шаблоны должны соответствовать вашим потребностям:

<xsl:template match="text()" />                      <!-- Removes the text from the <abc.xyz.color>FF5733</abc.xyz.color> element -->

<xsl:template match="/*">                            <!-- Copies the root element and its namespace -->
    <xsl:copy>
        <xsl:apply-templates select="node()|@*" />
    </xsl:copy>
</xsl:template>  

<xsl:template match="div[@class='workgroup_title']"> <!-- Applies the template to the <div> element -->
    <xsl:copy>
        <xsl:attribute name="style"><xsl:value-of select="concat('color: #',../abc.xyz.color,';')"/></xsl:attribute>
        <xsl:copy-of select="node()|@*" />
    </xsl:copy>
</xsl:template>

Его вывод:

<root xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <div style="color: #FF5733;" class="workgroup_title">
        <xsl:value-of select="./@name"/>
    </div>
</root>
0 голосов
/ 05 октября 2018

Вы можете использовать шаблоны значений атрибутов для вычисления (частей) значения литерального элемента результата: <div style="color: #{abc.xyz.color}">...</div>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...