首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript变量= xsl value-of

Javascript变量= xsl value-of
EN

Stack Overflow用户
提问于 2013-05-08 15:07:24
回答 1查看 4.9K关注 0票数 2

我使用的JavaScript是这样的:

代码语言:javascript
复制
<script>
  <xsl:for-each select = '/request/alldata'>

    var l_allDataValue   = '<xsl:value-of select="." />';
    var l_dataArray = l_allDataValue.split('!~');

    callFunction(l_dataArray);

  </xsl:for-each>
</script>

但是如果/request/alldata中有撇号',它将中断JavaScript,因为下面的表达式包含在撇号中:

代码语言:javascript
复制
'<xsl:value-of select="." />'

但如果我将其替换为以下任一项,则可以正常工作...

"<xsl:value-of select="." />""<xsl:value-of select='.' />"

现在我知道撇号'与JavaScript代码冲突了,但是哪种解决方案可以在所有浏览器上运行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-08 15:51:23

您可以使用'<xsl:value-of select="." />',但您需要通过在<alldata>中添加一个斜杠来转义所有单引号撇号,例如\'

您可以使用"<xsl:value-of select="." />" or "<xsl:value-of select='.' />",但是如果<alldata>可能包含双引号,那么您也需要转义这些双引号,比如下面的\"

如果您想要使用第一个,那么这将转义单引号:

代码语言:javascript
复制
<xsl:template name="escapeSingleQuotes">
  <xsl:param name="txt"/>

  <xsl:variable name="backSlashSingleQuote">&#92;&#39;</xsl:variable>
  <xsl:variable name="singleQuote">&#39;</xsl:variable>

  <xsl:choose>
    <xsl:when test="string-length($txt) = 0">
      <!-- empty string - do nothing -->
    </xsl:when>

    <xsl:when test="contains($txt, $singleQuote)">
      <xsl:value-of disable-output-escaping="yes" 
                    select="concat(substring-before($txt, $singleQuote), $backSlashSingleQuote)"/>

      <xsl:call-template name="escapeSingleQuotes">
        <xsl:with-param name="txt" select="substring-after($txt, $singleQuote)"/>
      </xsl:call-template>
    </xsl:when>

    <xsl:otherwise>
      <xsl:value-of disable-output-escaping="yes" select="$txt"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

你可以像这样在你的代码中使用:

代码语言:javascript
复制
var l_allDataValue = '<xsl:call-template name="escapeSingleQuotes">
                        <xsl:with-param name="txt" select="."/>
                      </xsl:call-template>'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16434669

复制
相关文章

相似问题

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