2015-03-13 4 views
0

У меня есть файл XSLT, который содержит следующий набор атрибутовКак увеличить размер переменной с помощью XSLT

<xsl:attribute-set name="related-links__content"> 
    <xsl:attribute name="start-indent"><xsl:value-of select="$side-col-width"/></xsl:attribute> 
</xsl:attribute-set> 

Значение $side-col-width является числом с единицей (например, 24pt).

Что мне нужно сделать, так это увеличить это значение. Семантический, это то, что я пытаюсь сделать:

<!-- Obviously not correct --> 
<xsl:attribute-set name="related-links__content"> 
    <xsl:attribute name="start-indent"> 
     <xsl:value-of select="$side-col-width"/> + 12pt 
    </xsl:attribute> 
</xsl:attribute-set> 

Это то, что можно с помощью XSLT, и если да, то как это может быть сделано?

+0

Вы знаете точную структуру '$ side-col-width'? Например, всегда ли какие-то цифры, за которыми следует «pt», или могут ли единицы изменения? На самом деле, почему бы вам не показать, как заполняется «$ side-col-width»? –

+0

$ side-col-width устанавливается вручную. Он всегда должен быть в очках (поэтому да, это всегда будет несколько цифр, за которыми следует «pt»). Я в порядке с решением, которое ожидает этот формат. – Scribblemacher

ответ

1

$ side-col-width устанавливается вручную.

Я не совсем уверен, что вы подразумеваете под «установить вручную». Если у вас есть что-то вроде:

<xsl:variable name="side-col-width" select="'24pt'"/> 

затем:

<xsl:value-of select="concat(substring-before($side-col-width, 'pt') + 12, 'pt')"/> 

вернется 36pt.

Если у вас есть лучший рабочий процесс, это еще один вопрос.

+0

Это работает, только если я использую number() сначала преобразовать строку в число: 'number (substring-before ($ side-col-width, 'pt')) + 12 ...' – Scribblemacher

+0

Это, вероятно, означает, что вы используя XSLT 2.0. Для справок в будущем: всегда указывайте, какую версию XSLT вы используете. –

+0

"* Это работает, только если я использую number(), чтобы преобразовать строку в число сначала *« Это не обязательно, потому что попытка использовать строку в дополнении должна преобразовывать ее в число неявно (проверено в Xalan, libxslt и Saxon 6.5 и 9). Какой процессор вы используете? –

Смежные вопросы