首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CDATA标记中的值是否未显示在XSL文件中?

CDATA标记中的值是否未显示在XSL文件中?
EN

Stack Overflow用户
提问于 2020-10-25 03:10:34
回答 1查看 30关注 0票数 0

我想用它的编码值%26替换动态生成的一段文本中的&符号,以防止它打断URL字符串。我将文本存储在hrefvalue变量中。我的目标是将&替换为%26,以便在浏览器的最终HTML代码中输出。

例如:“听力与理解”应改为“听力%26理解”。

我正在使用<![CDATA[来保存%26,但这似乎不起作用。我仍然会在浏览器中看到“倾听和理解”。为什么?

代码语言:javascript
复制
                            <xsl:variable name="hrefvalue" select="./node()" />
                            <xsl:choose>
                                <xsl:when test="contains($hrefvalue, '&amp;')">
                                    <xsl:variable name="string-before" select="substring-before($hrefvalue, '&amp;')" />
                                    <xsl:variable name="string-after" select="substring-after($hrefvalue, '&amp;')" />
                                    <xsl:variable name="ampersand"><![CDATA[%26]]></xsl:variable>
                                    <xsl:value-of select="concat($string-before, $ampersand, $string-after)" disable-output-escaping="yes" />
                                </xsl:when>
                                <xsl:otherwise>
                                    <xsl:value-of select="$hrefvalue" disable-output-escaping="no" />
                                </xsl:otherwise>
                            </xsl:choose>

我正在开发一个使用XSL 1.0的系统

EN

回答 1

Stack Overflow用户

发布于 2020-10-25 03:38:31

首先,CDATA是完全不必要和无关紧要的。CDATA的唯一目的是允许在不进行转义的情况下写入&<,如果不存在这些特殊字符,CDATA标记没有任何区别。

此外,如果您正在生成一个属性(如果它是一个URL,则很可能是这样),那么停用-输出-转义将不起作用。但同样,它可能不是必需的。

您的代码只处理字符串中的一个“与”号。

但是您的代码看起来很好。如果有问题,那就是代码中你没有展示给我们的部分。尝试构建一个完整的可重现示例:一个完整的样式表和源文档,我们可以实际运行它们来查看是否可以重现问题。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64517077

复制
相关文章

相似问题

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