Jump to content
  • 0

Вставить xml в php страницу


rus
 Share

Question

Мне нужно в php страницу вставить xml документ.

Делаю так:

в подгружаемом файле feedback.php между <td>


<td class="td_border">
<?php
//Define ours Consts
define('CREATOR','YOUR DATA');
define('XMLPATH','feedback_3/country.xml');
//Define ours headers
Header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP 1.1
Header('Cache-Control: post-check=0, pre-check=0', false);
Header('Pragma: no-cache'); // HTTP 1.0
Header('X-Creator: '.CREATOR);
Header('Content-Language: ru, ru-RU'); // Язык данных в файле
Header('Content-Type: application/xml; charset=Windows-1251'); // Объявляем тип файла

//Main
$handle = @fopen(XMLPATH, 'r');
if ($handle) {
while (!feof($handle)) {
$buffer = fgets($handle, 4096);
echo $buffer;
}
fclose($handle);
}
?>
</td>

В самом country.xml такое содержание:


<?xml version="1.0" encoding="windows-1251"?>
<select name="country" size="1">
<option value="Выберите страну" SELECTED>Выберите страну</option>
<option value="Австралия">Австралия</option>
и так далее..., список стран
</select>

Но в разных браузерах выдает разное описание ошибки:

В ИЕ:


Не удается отобразить страницу XML
Не удается просмотреть ввод XML с использованием списка стилей XSL.
Исправьте ошибку и затем нажмите кнопку "Обновить"или повторите попытку позднее.


——————————————————————————--

В текстовом комментарии обнаружен недопустимый знак.
Ошибка при обработке ресурса ''http://compasstour.ru/content/section/4...

<title>

В Опере:


Ошибка разбора XML: синтаксическая ошибка (Строка: 23, Символ: 24)

Обработать документ как HTML
Ошибка:well-formedness constraint: entity declared
Описание:http://www.w3.org/TR/REC-xml/#wf-entdeclared
20: <td colspan="3" class="shapka_1">
21: <div class="div_tel_1">
22: <p>Телефоны: 500-93-25 и 766-08-59</p>
23: <h1><a href="index.php">«MS-GROUP» Альянс ТУРЫ.ру Москва Перово</a></h1>
24: </div>
25: <a href="index.php"><img src="templates/compasstour/images/shapka.gif" align="right" border="0"></a>
26: </td>

В Мозиле:


Ошибка синтаксического анализа XML: неопределённая сущность
Адрес: [url="http://compasstour.ru/content/section/44/444/"]http://compasstour.ru/content/section/44/444/[/url]
Строка 23, символ 68:
<h1>
<a href="index.php?PHPSESSID=c76f242a49a02e424632663ee4493e88">
«MS-GROUP» Альянс ТУРЫ.ру Москва Перово
</a>
</h1>

В чем может быть ошибка? Подозрения на DOM, но как это исправить?

Link to comment
Share on other sites

19 answers to this question

Recommended Posts

  • 0

По-моему вся проблема состоит в том, что документ получается неоднородным: сначала html (т.е. <td> а перед ним наверняка еще что-то есть), потом неожиданно xml. Может быть расскажешь, что за xml нужно выводить? если это простой хтмл, то пропускай первую строку и выводи хтмл.

Link to comment
Share on other sites

  • 0
По-моему вся проблема состоит в том, что документ получается неоднородным: сначала html (т.е. <td> а перед ним наверняка еще что-то есть), потом неожиданно xml. Может быть расскажешь, что за xml нужно выводить? если это простой хтмл, то пропускай первую строку и выводи хтмл.

Сайт на джумле и поэтому все страницы на php.

В шаблон index.php (тип документа: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"> ) подгружается через модуль джумлы форма заявки на заказ тура (тоже с расширением php), а уже в эту форму подгружается список стран в формате xml.

UPD:

При чем на локалхосте все работает... ;)

Link to comment
Share on other sites

  • 0

Тему можно закрыть конечно, я уже разобрался, пошел другим путем, но если есть желающие объяснить почему не прокатывает именно этот способ (то есть через xml) буду очень признателен. ;)

Link to comment
Share on other sites

  • 0
rus,ты для туристов сайт пишешь?

Я тоже. Только я сам движуху пишу. Есть что показать?

Прости модер за оффтоп... ;)

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

Link to comment
Share on other sites

  • 0
А ты уверен, что feedback_3/country.xml — xml ? Ну т.е., что у него расширение xml я вижу, а вот соответствует ли он формату?

Да вроде бы соответствует, я в вики почитал про него (до этого никогда не сталкивался только косвенно).

Вот его содержимое:


<?xml version="1.0" encoding="windows-1251"?>
<select name="country" size="1">
<option value="Выберите страну" SELECTED>Выберите страну</option>
<option value="Австралия">Австралия</option>
и так далее..., список стран
</select>

Из описания в вики, как я понял важно соблюдать вложеность тегов (последовательность), а какие там они уже не столь важно, то есть вместо:

<option value="Австралия">Австралия</option>

можно типа:

<country>Австралия</country>

Я правильно понял?

Но мне нужно что бы в подгружаемое место выводился именно селект.

Link to comment
Share on other sites

  • 0

Дак вот, нифига не соответствует. Ругается на эту строчку:

«MS-GROUP»

Все дело в том, что символ «&» должен быть заменен эскейп-последовательностью &. А если ты хочешь, например вставить в html символы «&», тебе придется написать в xml «&amp;amp;» тогда в обработку юраузеру попадет строка «&amp;» и после обработки выведется нужный результат.

В твоем случае будет &laquo;MS-GROUP&raquo;

Косвенно знаком а флуду опять получилось

Link to comment
Share on other sites

  • 0
Дак вот, нифига не соответствует. Ругается на эту строчку:

Все дело в том, что символ «&» должен быть заменен эскейп-последовательностью &. А если ты хочешь, например вставить в html символы «&», тебе придется написать в xml «&amp;amp;» тогда в обработку юраузеру попадет строка «&amp;» и после обработки выведется нужный результат.

В твоем случае будет &laquo;MS-GROUP&raquo;

Косвенно знаком а флуду опять получилось

Нет homm, не в этом дело. Попробовал твой вариант - тоже самое, та же ошибка.

На локал хосте без тегов html body и без доктайпа соответственно в php файле все прекрасно выполняется, почему?

Link to comment
Share on other sites

  • 0

Вот прямо вот 2 браузера говорят конкретную строку и конкретный символ в котром ошибка, оба они крутятся вокруг констркции « про которую я и так знаю, что она не допустима и ты попытался исправить и у тебя прям «тоже самое, та же ошибка» в той же строчке на тех-же символах?

Знаешь что в таких случаях говорят? Не **зди ;)

Link to comment
Share on other sites

  • 0
в подгружаемом файле feedback.php между <td>

<?php
//Define ours Consts
define('CREATOR','YOUR DATA');
define('XMLPATH','feedback_3/country.xml');
//Define ours headers
Header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP 1.1
Header('Cache-Control: post-check=0, pre-check=0', false);
Header('Pragma: no-cache'); // HTTP 1.0
Header('X-Creator: '.CREATOR);
Header('Content-Language: ru, ru-RU'); // Язык данных в файле
Header('Content-Type: application/xml; charset=Windows-1251'); // Объявляем тип файла

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy