2011-10-07 54 views
0

我已经设置的XML元素像这样的:添加属性或节点的内容页面的DOM

<item code="<HTML_CODE>" /> 

例如:

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

代码属性的特殊字符转义(< - <, > - &rt;等) 有没有什么办法可以将页面DOM代码属性的内容附加到页面并将其呈现为html? 我的意思是,就我的例子而言,毕竟我需要两个超链接。

UPDATE

我:

<?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> 
+0

这不是格式良好的XML,请编辑问题并显示一个完整的(尽可能小)源XML文档和完整的(x)HTML作为结果,以及任何规则必须执行。 –

+0

Plz,看看mu更新 –

回答

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

我想这应该这样做。在JQuery中

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

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

+0

Xml不会去浏览器,它会在服务器端通过python lib lxml.etree进行转换。 –

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属性的值并返回节点集。我们一次又一次地看到,试图将标记置于属性中是愚蠢的和有害的 - 这只会破坏它。

+0

我不是说要将节点保存在属性上。我的意思是,有什么像功能eval(“字符串与代码”),从像python,js或PHP的东西? –

+0

如果存在的话,我会感到惊讶 - 转义标记是公认的不好的做法。所以,你需要两个步骤:第一步:使用attrbute的内容(必须有一个名为'html-unencode()'的函数,然后是'xml-parse()'这个字符串,最后应用完整的XML- API您从节点(s)解析非转义字符串。 –

相关问题