在XSLT上进行HTML编码

时间:2010-03-29 16:45:53

标签: xml xslt

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

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

2 个答案:

答案 0 :(得分:4)

您可以在us-ascii元素中指定xsl:stylesheet编码。以下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;

xml中的xsl:stylesheet方法与标准XML标题的结果相同。

答案 1 :(得分:0)

我很确定你会发现这个模板很有用: 下载此xslt并检查名为“url-encode-num”的xslt 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>

但很容易更新。

如果您正在寻找,请告诉我。

巴勃罗