在<span>标记</span>中嵌入XSL代码

时间:2012-09-04 16:05:29

标签: html css xml xslt

所以我在节点@style中保存了一些样式内容,我想调用它来形成<span>标签的样式属性。它也不够,所以我想将margin-left:700px作为<span>标记的样式属性的一部分附加。这可以吗?

顺便说一句,我无法编辑xsl正在调用的数据库,因为它是由客户端提供的

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

顺便说一句,我尝试了上述内容,Altova抱怨来自<的角色<xsl...在语法上出乎意料。

3 个答案:

答案 0 :(得分: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>

我现在不能测试它......

答案 1 :(得分:0)

你不能那样窝,但你可以做类似的事情:

假设您有一个名为'style_var'的变量,其中包含一些CSS:

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

一个HTML元素,span:

<span>
   ...
</span>

我很确定你能做到这一点:

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

你可以换掉你上面使用的节点选择器的变量选择器。

答案 2 :(得分: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'确实返回了正确的值。