XML XSLT到HTML字符转义(不是通常的)

时间:2014-03-07 14:14:09

标签: xml xslt

我从xml页面继承了java / xalan构建的静态站点。

构建网站时,每个html doc头部的html标签都包含在内。我想在各个xml页面中添加一个标记,我可以在该页面中为该html页面的头部插入标记。在这种情况下,标准链接标记表示重复内容。

在我的XML内容页面中,我添加了以下内容:     

<insertGoodness>link rel="canonical" href="path" /</insertGoodness>
注意缺少大于或小于字符。

在我的XSL模板中,节点从xml页面获取数据并输出链接标记。     

<xsl:variable name="insert_Goodness" select="$content/insertGoodness" />

<xsl:template match="insertGoodness">
    <xsl:text disable-output-escaping="yes"><![CDATA[<]]></xsl:text>
    <xsl:value-of select="$insert_Goodness/node()" />
    <xsl:text disable-output-escaping="yes"><![CDATA[>]]>
    </xsl:text>
</xsl:template>

在我的HTML模板中,我已将其插入到应该结束的head部分。     

<insertGoodness />

最后,在html页面上,我得到了输出。     

<link rel="canonical" href="path" />

正如你所看到的,我逃脱了更大的&amp;在XSL模板中少于字符。我可以这样做(把整个链接标记放在我的xml内容页面中),因为我可能想在html head部分插入多个custon标记吗?

我已经尝试了所有可以找到的逃脱技巧(http://www.fileformat.info/info/unicode/char/003e/index.htm)而没有运气。有办法吗?

1 个答案:

答案 0 :(得分:0)

我不知道这是不是最好的方式,但它有效,而且只是暂时的。

在我的xsl模板文件中

<xsl:template match="insertGoodness">
    <xsl:variable name="tagContent1" select="$content/insertGoodness/node()" />
    <xsl:value-of select="$tagContent1" disable-output-escaping="yes" />
</xsl:template>

然后在xml页面

<insertGoodness>
    <![CDATA[<]]>link rel="canonical" href="path" /<![CDATA[>]]>
</insertGoodness>