首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以使用模板参数设置disable-output-escaping吗?

可以使用模板参数设置disable-output-escaping吗?
EN

Stack Overflow用户
提问于 2012-12-18 07:45:21
回答 1查看 3.7K关注 0票数 3

为什么下面的代码不能在XSLT1.0中工作?

代码语言:javascript
复制
<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>

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

代码语言:javascript
复制
<xsl:with-param name="DisableOutputEscaping">no</xsl:with-param>

我正尝试在SharePoint内容查询WebPart中执行此操作,但遇到web部件错误。如果我在模板中硬编码禁用-输出-转义为"yes“或" no”,我不会得到任何错误。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-12-18 12:53:36

C·M·斯珀伯格-麦昆的好答案中提供了解释。

以下是一种解决方法:

代码语言:javascript
复制
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:variable name="vAmp">&amp;</xsl:variable>
 <xsl:variable name="vYesNo" select="'yes'"/>

 <xsl:template match="/">
   <xsl:choose>
    <xsl:when test="$vYesNo = 'yes'">
      <xsl:value-of select="$vAmp" disable-output-escaping="yes"/>
    </xsl:when>
    <xsl:when test="$vYesNo = 'no'">
      <xsl:value-of select="$vAmp" disable-output-escaping="no"/>
    </xsl:when>
   </xsl:choose>
 </xsl:template>
</xsl:stylesheet>

当对任何XML文档(未使用)应用此转换时,结果为:

代码语言:javascript
复制
&

如果我们替换,则为

代码语言:javascript
复制
 <xsl:variable name="vYesNo" select="'yes'"/>

使用

代码语言:javascript
复制
 <xsl:variable name="vYesNo" select="'no'"/>

修改后的转换结果现在是

代码语言:javascript
复制
&amp;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13924168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档