gpt4 book ai didi

xslt-1.0 - 可以使用模板参数设置禁用输出转义吗?

转载 作者:行者123 更新时间:2023-12-02 00:14:32 24 4
gpt4 key购买 nike

为什么以下内容在 XSLT1.0 中不起作用?

<xsl:template name="GenerateSummaryOld">
<xsl:param name="Content" />
<xsl:param name="Length" />
<xsl:param name="DisableOutputEscaping" />

<xsl:value-of select="substring($Content, 1, $Length)" disable-output-escaping="$DisableOutputEscaping" />
<xsl:if test="string-length($Content) &gt; $Length"><i>...text has been shortened</i></xsl:if>
</xsl:template>

我在调用模板时使用了以下内容:

<xsl:with-param name="DisableOutputEscaping">no</xsl:with-param>

我正在 SharePoint 内容查询 WebPart 中尝试此操作,但出现 Web 部件错误。如果我在模板中将禁用输出转义硬编码为"is"或“否”,我不会收到任何错误。

最佳答案

简短回答:disable-output-escaping 的值必须在 XSLT 样式表中逐字指定;它不能在样式表执行时计算。

也就是说,你观察到的行为是语言定义规定的行为。

更长的答案: XSLT 1.0 spec显示 xsl:value-of 的语法(或多或少):

  <!-- Category: instruction -->  <xsl:value-of       select = string-expression       disable-output-escaping = "yes" | "no" />

注意这里“string-expression”是斜体的;这意味着 select 属性的值不是字符串“string-expression”,而是可以计算并强制转换为字符串的任何 XPath 表达式。但是 disable-output-escaping 的“yes”和“no”没有斜体,没有被描述为表达式,也没有被描述为属性值模板。 "is"或“否”值必须按字面意思给出。

规范最接近于明确说明这一点(我能找到)是第 7.6.2 节中关于属性值模板的注释:

NOTE:Not all attributes are interpreted as attribute value templates. Attributes whose value is an expression or pattern, attributes of top-level elements and attributes that refer to named XSLT objects are not interpreted as attribute value templates. ...

这是 XSLT 中众多早期绑定(bind)约束之一,旨在确保样式表可以被编译而不仅仅是解释。

关于xslt-1.0 - 可以使用模板参数设置禁用输出转义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com