【问题标题】:embedding XSL code in <span> tag在 <span> 标记中嵌入 XSL 代码
【发布时间】:2026-02-15 17:20:05
【问题描述】:

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

顺便说一句,我无法编辑 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 抱怨来自 &lt;xsl... 的字符 &lt; 在语法上是出乎意料的。

【问题讨论】:

    标签: html css xml xslt


    【解决方案1】:

    您的报价可能搞砸了 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>
    

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

    【讨论】:

      【解决方案2】:

      在这种情况下,您可能想了解“属性值模板”。这允许您将代码直接“嵌入”到属性中。

       <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' 确实返回了正确的值。

      【讨论】:

        【解决方案3】:

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

        假设您有一个带有一些 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>
        

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

        【讨论】:

          最近更新 更多