当字符串包含单引号时,使用 js 替换 XSL 变量的值

巴巴克·法赫里洛

我有一个 XSL 如下:

<xsl:template match="/">
    <xsl:variable name="vartext" select="''" />

....
             <th>
                <xsl:value-of select="$vartext"/>
              </th>

我使用js设置了vartext的值,如下:

node = this.xsldoc.selectSingleNode('//xsl:variable[...]']');
node.setAttribute('select', sometext);

根据https://www.w3schools.com/xml/ref_xsl_el_variable.asp,如果 select 属性包含文字字符串,则该字符串必须在引号内。

但是变量可能包含这样的值“'Hey d'text'”。

因此,当我想使用提供的 XSL 转换我的 XML 时,它不起作用。我什至试图用\替换'。

更新

在发布问题之前,在 xslt concat 函数中尝试了scape 单引号,但它对我没有帮助。

我使用 XSL 的方式如下:

var res = xsltDo(this.xmldoc, this.xsldoc, this.html_element, iOptionParent);

xsltDo = function (xml, xsl, target, iOptionParent) {
        try {
            if (!iOptionParent) target.innerHTML = "";
            var fragment = xml.transformNode(xsl);
            target.innerHTML += fragment;
            //$( window ).trigger( "XsltDone", [target] );

            if (window.AC !== undefined) {
                window.AC.onDomChange(target);
            }

            return true;
        }
        // si erreur on retourne une XsltError
        catch (err) {
            return new Error(err);
        }
    };
C队

写在评论中有点太长了,但假设你已经someText设置为“嘿”。如果你只是这样做

 node.setAttribute('select', someText);

那么这和直接在 XSLT 中这样做是一样的

 <xsl:variable name="vartext" select="Hey" />

这将选择一个名为“Hey”的元素,而不是文本文字“Hey”

你能做的就是这个...

 node.setAttribute('select', '"' + someText + '"');

这将等同于在 XSLT 中执行此操作

 <xsl:variable name="vartext" select='"Hey"' />

如果您的someText变量中有撇号,这也将起作用,并且无需在 javascript 中对其进行转义。但是,如果您"someText.

处理撇号和引号更容易的是删除 select 属性,并将文本添加为​​子节点

node.removeAttribute("select");
node.appendChild(xsl.createTextNode(someText));

这将与这样做相同......

<xsl:variable name="vartext">Hey 'Text "It works!"</xsl:variable>

当然,您真正应该做的是更改 XSLT 以使用参数。尤其是因为“selectSingleNode”仅在 Internet Explorer 中受支持,我相信。

如果您可以更改 XSLT 以使用参数,则 StackOverflow 上还有其他问题表明您必须在 Javascript 中设置参数。例如,请参见如何将参数从 Javascript 函数传递到 XSLT

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用xsl使用正则表达式分析字符串,使用属性文件中的值进行变量替换

来自分类Dev

XSL / FO值替换

来自分类Dev

JS使用变量替换所有出现的字符串

来自分类Dev

XSL:替换标签内的值

来自分类Dev

当字符串包含引号时使用替换

来自分类Dev

XSL:如何替换字符串和更改属性值

来自分类Dev

如果包含转义的单引号,如何用文字替换单引号字符串?

来自分类Dev

使用XSL选择替换空字符串

来自分类Dev

如何测试变量是否包含元素值或字符串/数字值?(XSL 1.0)

来自分类Dev

替换字符串中的单引号

来自分类Dev

将JS变量替换为Jinja模板的字符串

来自分类Dev

php变量包含字符串并替换

来自分类Dev

使用XML属性值作为XSL变量

来自分类Dev

JS迭代对象数组并替换字符串中的值

来自分类Dev

如何替换perl中双引号中的字符串变量的值

来自分类Dev

用R中带引号的值替换字符串向量中的变量

来自分类Dev

替换函数来替换单引号字符串

来自分类Dev

用字符串内的双引号替换单引号

来自分类Dev

替换字符串中的单引号和双引号

来自分类Dev

转换字符串中的 XSL 多次替换

来自分类Dev

如何在单引号字符串中使用变量?

来自分类Dev

如何在包含必须使用双引号的JSON字符串的数据设置值周围添加单引号?

来自分类Dev

Anorm字符串插值不替换变量

来自分类Dev

用值检测和替换字符串中的变量

来自分类Dev

Anorm字符串插值不替换变量

来自分类Dev

用R中的字符串值替换变量

来自分类Dev

JS-使用正则表达式获取字符串替换的原始值

来自分类Dev

JS-使用正则表达式获取字符串替换的原始值

来自分类Dev

XSL:用连字符替换空格

Related 相关文章

热门标签

归档