2013-03-17 3 views
3

Например, как я могу вставлятьКак я могу вставить XML-документ внутри документа XHTML?

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <node><![CDATA[Text]]></node> 
</root> 

в моем XHTML?

Я знаю, что я могу поставить его в раздел CDATA ...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> 
<title>My title</title> 
</head> 
<body> 
<p>I am a XHTML paragraph!</p> 
<div> 
    <![CDATA[ 
    <?xml version="1.0" encoding="utf-8"?> 
    <root> 
     <node>Text</node> 
    </root> 
    ]]> 
</div> 
</body> 
</html> 

... но тогда я должен удалить разделы CDATA XML-файла и XML обрабатывается как текст, а не XML.

Тогда я получаю это ...

enter image description here

... но я хочу что-то вроде этого:

enter image description here

+0

Я не понимаю - вы хотите, чтобы необработанный xml отображался и отформатирован для удобства чтения? – Jodes

+0

@Jodes Да. Поэтому я хочу, чтобы браузер разбирал XHTML с помощью синтаксического анализатора XHTML и анализировал XML, используя его синтаксический анализатор XML. – Oriol

ответ

2

Пожалуйста, обратите внимание, что CDATA это просто способ escape-символы, а не метод вложения. Теперь на ваш вопрос:

Насколько я знаю, единственный способ, чтобы встроить файл XML будет использовать объект тега или IFRAME:

<!-- Keep in mind that iframe is invalid in XHTML 1.0 and 1.1.--> 
<iframe src="data:application/xml,&lt;root&gt;&lt;node&gt;Text&lt;/node&gt;&lt;/root&gt;"/> 
<!-- When using `data:mime/type,[data]' the type attribute is overriden --> 
<object data="data:application/xml,&lt;root&gt;&lt;node&gt;Text&lt;/node&gt;&lt;/root&gt;"/> 

Проблема здесь в том, что некоторые браузеры будут просто отображать содержимое XML как встроенный текст, в то время как другие будут отображаться в окне просмотра XML, что, скорее всего, вам нужно.

Вот график:

 
    layout engine (browser) | <object> | <iframe> 
---------------------------------------------------------- 
    Gecko (Firefox)    | inline text | XML viewer 
    Webkit (Safari/new Opera) | inline text | inline text 
    Blink (Chrome/Chromium)  | inline text | inline text 
    Presto (old Opera)   | XML Viewer | XML viewer 
    Trident (IE5-IE8)   | inline text | XML Viewer 

С вуаля вытесняется, вы остаетесь с IFRAME + светлячок в качестве единственного работоспособного комбинации.

Если кто-то может протестировать IE, пожалуйста, отредактируйте его результаты в таблице.

+0

[** JSFiddle **] (http://jsfiddle.net/qvRzT/1/). Интересно, я думал, что '