2012-09-04 97 views
0

所以我有一些样式内容保存在节点@style,我想调用它来形成<span>标签的样式属性。它也是不够的,所以我想追加margin-left:700px作为<span>标签的样式属性的一部分。这是可行的吗?嵌入XSL代码<span>标签

顺便说一下,我不能编辑它,因为它是由客户端提供

<span style="<xsl:copy-of select="Root/Node/MyFile/MyStyle/@style" margin-left:700px"> 
    <xsl:copy-of select="Root/Node/MyFile/MyCaption/Caption"/> 
</span> 

者均基于XSL是调用数据库,我想上面和Altova的抱怨,从<xsl...字符<在语法上是意外。

回答

3

你的报价很可能搞砸了的XSLT,试试这个:

<span> 
    <xsl:attribute name="style"> 
     <xsl:copy-of select="Root/Node/MyFile/MyStyle/@style" /> 
     <xsl:text> margin-left:700px</xsl:Text> 
    </xsl:attribute> 

    <xsl:copy-of select="Root/Node/MyFile/MyCaption/Caption"/> 
</span> 

我不能此刻虽然测试...

0

你不能像鸟巢,但你可以做同样的事情:

假设你有一个名为“style_var”一些CSS变量:

<xsl:variable name="style_var">color: blue;</xsl:variable> 

和一个HTML元素,跨度:

<span> 
    ... 
</span> 

我相当肯定,你可以这样做:

<span> 
    <xsl:attribute name="style"> 
     <xsl:value-of select="$style_var" /> 
     <xsl:text>margin-left: 100px;</xsl:Text> 
    </xsl:attribute> 
</span> 

而且,您可能会换出您上面使用的节点选择器的变量选择器。

0

您可能希望了解在“属性值模板”这个案例。这使您可以将代码直接嵌入到属性中。

<span style="{Root/Node/MyFile/MyStyle/@style}" margin-left:700px"> 
    <xsl:value-of select="Root/Node/MyFile/MyCaption/Caption"/> 
</span> 

大括号{和}在这里表示属性值模板(AVT),并表示括号内的代码应该被执行来获取值。

您需要确保您的xpath表达式“Root/Node/MyFile/MyStyle/@ style”确实会返回正确的值。