在XSLT中进行HTML编码

4

我希望将XML属性中的某些值转换为带有实体的有效HTML。例如,XML中的字符串"olá"将从XSLT转换为"olá"

我找不到任何可以执行此操作的xsl函数。 有什么想法吗?


1
只要您的HTML文档使用了正确的编码,就不需要转义这样的字符。 - Randolpho
2个回答

5
您可以在xsl:stylesheet元素中指定us-ascii编码。下面是XSLT的示例代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output indent="yes" method="html" encoding="us-ascii"/>

    <xsl:variable name="data" select="'olá'" />

    <xsl:template match="/">
        <xsl:text>olá - </xsl:text>
        <xsl:value-of select="$data" />
    </xsl:template>
</xsl:stylesheet>

提供:

ol&#225; - ol&#225;
xsl:stylesheet中的xml方法与标准XML标题产生相同的结果。

问题在于xsl:text只适用于字面值。我想对来自输入XML的一个值进行编码,但是xsl:value-of似乎并不关心输出编码。 - Hugo Palma
我只是为了简单起见使用了 xsl:text。它也可以与 xsl:value-of 一起使用,我已经验证过了。我将在我的初始答案中添加一个示例。 - Igor Kuzmitshov
@Hugo:无论哪种方式,xsl:textxsl:value-of都应该可以工作。 <xsl:variable name="foo" select="'olá'"/><xsl:value-of select="$foo"/> 会产生 ol&#225; - Mads Hansen

0

我确定您会发现这个模板很有用: 下载此xslt并检查名为"url-encode-num"的文件 http://advanced-internal-onebox.googlecode.com/files/obox_stylesheet.xslt

它可以转换任何特殊字符...... 好吧,列在这里具有数字编码的任何字符:

<xsl:variable name="latbis">¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ"&lt;&gt;=</xsl:variable>
<xsl:variable name="digit1">111111111111111111111111111111111111111222222222222222222222222222222222222222222222222222222220000</xsl:variable>
<xsl:variable name="digit2">666666666777777777788888888889999999999000000000011111111112222222222333333333344444444445555552777</xsl:variable>
<xsl:variable name="digit3">123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123452465</xsl:variable>

但很容易更新。

如果这是您要寻找的,请告诉我。

Pablo


提供的链接目前无法访问。 - SketchBookGames

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接