0

所以我在节点@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...语法上是出乎意料的。

4

3 回答 3

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>

虽然我暂时无法测试...

于 2012-09-04T16:16:22.497 回答
0

你不能这样嵌套,但你可以做类似的事情:

假设您有一个带有一些 CSS 的名为“style_var”的变量:

<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>

您可能可以将变量选择器换成上面使用的节点选择器。

于 2012-09-04T16:15:09.900 回答
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' 确实返回正确的值。

于 2012-09-04T16:50:53.477 回答