Автор Гілка: python: xml.dom.minidim, cgi...  (Прочитано 2199 раз)

xml

  • Гість
python: xml.dom.minidim, cgi...
« : 2008-06-26 12:04:28 »
Привіт!

Передаю xml документ через форму, а потім отримую його так: xml = form.getvalue('xml'). Тут все ОК, пишу його для перевірки у файл, і все збігається, але коли я його виводжу через:
print "Content-Type: text/xml\n\n"
print "<html><head><title>Результат</title></head>"
print "<body>"
print xml
print "</body></html>"

Firefox мені видає:

Цитата
XML Parsing Error: xml declaration not at start of external entity
Location: http://localhost/cgi-bin/parser.py
Line Number 5, Column 1:<?xml version="1.0" encoding="utf-8"?>
^

Сам xml документ сформовано вірно, ретельно перевіряв. Схоже на те, що перед першим рядком додаються пробіли... :-/

xml

  • Гість
Re: python: xml.dom.minidim, cgi...
« Відповідей #1 : 2008-06-26 12:06:23 »
Погадно відобразилась відповідь браузера. Ось:
XML Parsing Error: xml declaration not at start of external entity
Location: http://localhost/cgi-bin/osmp.py
Line Number 5, Column 1:

<?xml version="1.0" encoding="utf-8"?>
^

xml

  • Гість
Re: python: xml.dom.minidim, cgi...
« Відповідей #2 : 2008-06-26 12:14:46 »
Ой, нащось додав кпу непотрібних html теґів. Повидаляв, але всеодно :(

Тепер так:
print "Content-Type: text/xml\n\n"
print xml

Відсутній BM

  • Кореспондент
  • ***
  • дописів: 162
  • Карма: +0/-0
  • SUSE Linux Products GmbH
Re: python: xml.dom.minidim, cgi...
« Відповідей #3 : 2008-06-27 16:00:13 »
Привіт!

Передаю xml документ через форму, а потім отримую його так: xml = form.getvalue('xml'). Тут все ОК, пишу його для перевірки у файл, і все збігається, але коли я його виводжу через:
print "Content-Type: text/xml\n\n"
print "<html><head><title>Результат</title></head>"
print "<body>"
print xml
print "</body></html>"

Firefox мені видає:

Цитата
XML Parsing Error: xml declaration not at start of external entity
Location: http://localhost/cgi-bin/parser.py
Line Number 5, Column 1:<?xml version="1.0" encoding="utf-8"?>
^

Сам xml документ сформовано вірно, ретельно перевіряв. Схоже на те, що перед першим рядком додаються пробіли... :-/

Правильно видає. Нєфіґ вставляти цілком XML в абсолютно неправильний HTML, що навіть без doctype.
Якщо Content-Type встановлено "text/xml", то причому там <html.... ? Одразу й треба вставляти <?xml ... опісля того. Це раз. По-друге, якщо все-ж таки хочете вставити XML в HTML (що всеодно дуже дико звучить) — приберіть <?xml ... ?> в документі. А по-третє щось воно мені дуже все дивно виглядає.

Краще спитаю так: що це ви там такого робите й що ви хочете зробити?  ;)
« Змінено: 2008-06-27 16:03:40 від BM »

Відсутній Веприк

  • Дописувач
  • **
  • дописів: 58
  • Карма: +0/-0
  • Pythonic man
Re: python: xml.dom.minidim, cgi...
« Відповідей #4 : 2008-07-02 02:15:27 »
Привіт!

Передаю xml документ через форму, а потім отримую його так: xml = form.getvalue('xml'). Тут все ОК, пишу його для перевірки у файл, і все збігається, але коли я його виводжу через:
print "Content-Type: text/xml\n\n"
print "<html><head><title>Результат</title></head>"
print "<body>"
print xml
print "</body></html>"

Firefox мені видає:

Цитата
XML Parsing Error: xml declaration not at start of external entity
Location: http://localhost/cgi-bin/parser.py
Line Number 5, Column 1:<?xml version="1.0" encoding="utf-8"?>
^
ну для початку приведіть код форми прийому і обробки. Чує моє серце що xml може escape-итися, та й взагалі вставка чужорідного елемента в html документ ламає його. Якщо у вас xml то в нього є строгі правила, і він забов'язаний починатися з кореневого елемента xml , що за html там не розумію, є така річ як xhtml, але вона повністю узгоджується з правилами побудови xml-документа.
Далі ще гірше, в приведеному вами шматку немає й натяку на форму, тоді питання що розбираж фунція getvalue.
До речі може краще код викладати на якомусь з pastebin сервісів, а тут подавати лише лінк мені подобається ось цей .
Автору прочитати хоча б короткий довідничок по xml та html, але не з класу "для повних ідіотів...", та "... за 2 години".
Мої рефлексії на довкілля http://blog.sasnyk.name

Відсутній BM

  • Кореспондент
  • ***
  • дописів: 162
  • Карма: +0/-0
  • SUSE Linux Products GmbH
Re: python: xml.dom.minidim, cgi...
« Відповідей #5 : 2008-07-02 10:44:18 »
Передаю xml документ через форму

Як просто файл? Тоді RTFM про form content types:
http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4

Можна й просто впхати в <TEXTAREA>. Я не знаю чим ви там користуєтесь,
але в Zope це зазвичай робиться так:

# Somewhere in your product
def foobar(self):
    """
    foobar accepts crap from the HTML form and chews it, spitting pieces.
    """
    myXmlData = self.REQUEST.form.get('text')
    if myXmlData is not None:
        ...

При тому, що форма:
<form action="foobar" method="post">
  <textarea name="text"></textarea>
  <input type="submit">
</form>

...і всі діла. :)
« Змінено: 2008-07-02 10:52:50 від BM »