2015-03-13 44 views
0

增加一个可变的尺寸我有一个包含以下属性设置如何使用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)的单元的数目的XSLT文件。

我需要做的是增加一个具体的值。在语义上,这就是我想要做的事:

<!-- 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'是如何填充的? – 2015-03-13 13:19:14

+0

$ side-col-width是手动设置的。它应该始终在pts中(所以是的,它总是会有一些数字后跟“pt”)。对于预期此格式的解决方案,我很满意。 – Scribblemacher 2015-03-13 13:24:07

回答

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(substring-before($ side-col-width,'pt'))+ 12 ...' – Scribblemacher 2015-03-13 14:38:56

+0

这可能意味着你使用XSLT 2.0。以供将来参考:总是告诉我们您使用的是哪个版本的XSLT。 – 2015-03-13 14:45:11

+0

“*这只适用于使用数字()将字符串转换为数字的情况*”不应该有必要,因为试图在添加中使用该字符串应该将其隐式转换为数字(在Xalan中进行了测试,libxslt和撒克逊6.5和9)。你在使用哪种处理器? – 2015-03-13 14:50:25