基本上我需要在一个if语句中打开一个div,然后在另一个语句中关闭它。我试过了
<xsl:value-of select="'<div>'"/>
但失败了,因为&lt;和&gt;属性中不允许使用。有任何想法吗? 干杯
答案 0 :(得分:5)
如果您想要做的是输出一些内容,无论条件如何,但根据条件将内容包装在<div>
中:
<xsl:choose>
<xsl:when test="myConditionIsTrue">
<div>
<xsl:call-template name="bar"/>
</div>
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="bar"/>
</xsl:otherwise>
</xsl:choose>
您可以将<xsl:call-template>
更改为<xsl:apply-templates>
或<xsl:value-of select="$myvariable" />
等,具体取决于不变内容。
这样,您将树结构视为树结构,利用基于XML树的处理器的强大功能,而不是试图对抗它。 DOE可能在许多情况下工作,但它不可移植,因为XSLT处理器不需要遵守它。实际上他们不能,除非他们碰巧负责特定管道中的序列化。上述方法避免了这个问题。
答案 1 :(得分:3)
这有效:
<xsl:text disable-output-escaping="yes"><div></xsl:text>
感谢@Alejandro的评论提示
答案 2 :(得分:1)
如果您只是将其打印出来,则可以使用html实体<
和>
代替<
和>
。
答案 3 :(得分:0)
这通常是不好的做法,因为您应该始终在同一级别打开和关闭输出的标记。否则,你正在寻找一个潜在的噩梦:“我应该在哪里关闭它?”问题在路上。也就是说,这可能有用:
<xsl:text disable-output-escaping="yes"><div></xsl:text>
(编辑:忘记添加输出转义)