我正在传递param值作为目录说c:\ MyFolder \ myfile.txt。
但是当我在javascript块中收到该值时,它返回值c:MyFolderMyfile.txt
如何在javascript块中获得相同的param值?
代码:
<xsl:param name="ResourcePath"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
alert('<xsl:value-of select="$ResourcePath"/>');
//It shows value c:MyFolderMyfile.txt but I want c:\MyFolder\myfile.txt
</script>
</head>
<body> </body>
</html>
</xsl:template>
答案 0 :(得分:0)
你需要在$ResourcePath
中逃避斜线。将文本替换为c:\MyFolder\myfile.txt
:c:\\MyFolder\\myfile.txt
。
JavaScript将字符串中的\
解释为转义字符。由于斜杠后跟m
,导致转义序列无效,因此只会呈现m
而不是\m
。
答案 1 :(得分:0)
为了在JavaScript中工作,而不是输出这个......
alert('c:\MyFolder\myfile.txt');
你需要输出这个
alert('c:\\MyFolder\\myfile.txt');
不幸的是,XSLT 1.0没有“替换”功能,因此您必须使用递归模板将\
替换为\\
。
快速搜索StackOverflow会发现这是一个例子:
尝试使用此XSLT,其中包含“替换”模板
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes" />
<xsl:param name="ResourcePath" select="'c:\MyFolder\myfile.txt'"/>
<xsl:template match="/">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">
<xsl:text>alert('</xsl:text>
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="$ResourcePath" />
<xsl:with-param name="replace" select="'\'" />
<xsl:with-param name="by" select="'\\'" />
</xsl:call-template>
<xsl:text>');</xsl:text>
</script>
</head>
<body> </body>
</html>
</xsl:template>
<xsl:template name="string-replace-all">
<xsl:param name="text" />
<xsl:param name="replace" />
<xsl:param name="by" />
<xsl:choose>
<xsl:when test="contains($text, $replace)">
<xsl:value-of select="substring-before($text,$replace)" />
<xsl:value-of select="$by" />
<xsl:call-template name="string-replace-all">
<xsl:with-param name="text" select="substring-after($text,$replace)" />
<xsl:with-param name="replace" select="$replace" />
<xsl:with-param name="by" select="$by" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$text" />
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
这应输出以下内容
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script type="text/javascript">alert('c:\\MyFolder\\myfile.txt');</script>
</head>
<body/>
</html>