将属性或节点内容添加到页面DOM

时间:2011-10-07 11:57:52

标签: xml dom

我有一组像这样的xml元素:

<item code="<HTML_CODE>" />

例如:

<items>
    <item code='<a href="http://google.com">Google</a>' />
    <item code='<a href="http://google.com">Google</a>' />
</items>

代码属性中的所有特殊字符都已转义(&lt; - &lt;,&gt; - &amp; rt;等) 有没有办法将代码属性的内容追加到页面DOM并将其渲染为html? 我的意思是,在我的例子中,毕竟我需要在页面上有两个超链接。

更新

我有:

<?xml version='1.0' encoding='utf-8'?>
<root>
<materials>
<items>
<item project_id="3" code="&lt;a href=&quot;http://google.com&quot;&gt;Text&lt;/a&gt;" txt_id="text1" text="&#171;&#1050;&#1086;&#1088;&#1086;&#1083;&#1077;&#1074;&
#1089;&#1090;&#1074;&#1086;&#187; &#8212; &#1073;&#1088;&#1072;&#1091;&#1079;&#1077;&#1088;&#1085;&#1072;&#1103; &#1088;&#1086;&#1083;&#1077;&#1074;&#1072;&#1103; &#1086;&#1085;&#1083;&#1072;&#1081;&#1085;-&#1080;&#1075;&#1088;&#1072;" />
<item project_id="3" code="Texttextetx" />
</items>
</materials>
</root>

我需要:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...anything here..
</head>
<body>
<a href="http://google.com">Text</a>
Texttextetx <!-- I know, this is bad but this is example-->
</body>

3 个答案:

答案 0 :(得分:0)

我认为应该这样做。在JQuery中

$('item').each(function(){
     $("#receiving_div").append($(this).attr('code'));
})

但是,仅仅返回HTML而不是将XML包装在XML中会更有意义吗?无论如何,它们都只是标记语言......

答案 1 :(得分:0)

<item project_id="3" code="&lt;a href=&quot;http://google.com&quot;&gt;Text&lt;/a&gt;" txt_id="text1" text="&#171;&#1050;&#1086;&#1088;&#1086;&#1083;&#1077;&#1074;& 
#1089;&#1090;&#1074;&#1086;&#187; &#8212; &#1073;&#1088;&#1072;&#1091;&#1079;&#1077;&#1088;&#1085;&#1072;&#1103; &#1088;&#1086;&#1083;&#1077;&#1074;&#1072;&#1103; &#1086;&#1085;&#1083;&#1072;&#1081;&#1085;-&#1080;&#1075;&#1088;&#1072;" /> 
<item project_id="3" code="Texttextetx" /> 

根据定义,属性的值不能是节点 - 它只是一个字符串。因此,上面的href属性根本不包含任何标记 - 它包含已销毁的标记。

XSLT / XPath不能立即使用这样的字符串 - 它必须首先由XML解析器解析。

因此,如果您需要使用XSLT处理此问题,则xslt代码必须使用扩展函数来解析href属性的值并返回节点集。

正如我们一次又一次地看到的那样,尝试将标记放在属性中是愚蠢和有害的 - 这只会破坏它。

答案 2 :(得分:0)

<xsl:value-of select="XPATHQUERY" disable-output-escaping="yes" />