gpt4 book ai didi

javascript - 在浏览器上呈现转义的 XML

转载 作者:太空宇宙 更新时间:2023-11-04 15:41:07 25 4
gpt4 key购买 nike

对于下面的 xml,我想通过 xslt 在浏览器上呈现未转义的文本部分,例如:

<one>
&lt;text&gt;
</one>

我希望在浏览器上呈现的标记是:

&lt;text&gt;

但是当我使用如下所示的应用模板时

<xsl:template match="text()" mode="literalHTML">
<xsl:copy-of select=".">
</xsl:copy-of>
</xsl:template>

上面的 XML 被呈现为:

<text>

我怎样才能修改这个模板,让它打印出 ;在浏览器上?

最好的问候,凯沙夫

最佳答案

这可以在 XSLT 1.0 中使用非常棘手的递归处理来实现。

幸运的是,可以使用 FXSL (一个 XSLT 模板库)在短短几分钟内解决相同的任务:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:f="http://fxsl.sf.net/"
xmlns:testmap="testmap"
exclude-result-prefixes="xsl f testmap">
<xsl:import href="str-dvc-map.xsl"/>

<testmap:testmap/>

<xsl:output omit-xml-declaration="yes" indent="yes"/>

<xsl:template match="/">
<xsl:variable name="vTestMap" select="document('')/*/testmap:*[1]"/>
<xsl:call-template name="str-map">
<xsl:with-param name="pFun" select="$vTestMap"/>
<xsl:with-param name="pStr" select="/*/text()"/>
</xsl:call-template>
</xsl:template>

<xsl:template name="escape" mode="f:FXSL"
match="*[namespace-uri() = 'testmap']">
<xsl:param name="arg1"/>

<xsl:choose>
<xsl:when test="$arg1 = '&lt;'">&amp;lt;</xsl:when>
<xsl:when test="$arg1 = '&gt;'">&amp;gt;</xsl:when>
<xsl:otherwise><xsl:value-of select="$arg1"/></xsl:otherwise>
</xsl:choose>
</xsl:template>

</xsl:stylesheet>

当此转换应用于以下 XML 文档时:

<one>
&lt;text&gt;
</one>

产生了想要的结果:

&amp;lt;text&amp;gt;

它在浏览器中显示为:<text>

关于javascript - 在浏览器上呈现转义的 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3289871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com