Ссылка на неопределенный объект

Если название форума вам о чём-то говорит, то значит, внутри вы найдете что-то для себя полезное.
Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Ссылка на неопределенный объект

Сообщение Antonariy » 13.04.2007 (Пт) 11:38

Почему при выполнении
Код: Выделить всё
Dim doc As New DOMDocument
doc.loadXML "<root>&nbsp;</root>"
в doc.parseError появляется ошибка "Ссылка на неопределенный объект ''nbsp''"? Как его определить, чтобы такой текст загружался?
Лучший способ понять что-то самому — объяснить это другому.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 13.04.2007 (Пт) 11:41

DTD или прям в сам xml внедри описание или укажи схему xmlns

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.04.2007 (Пт) 11:53

Как выглядит описание? Вернее как будет выглядеть мой пример с описанием объекта (раньше в дебри xml залезать не приходилось :oops: )? Или как он будет выглядеть с подходящей схемой? Вернее нужен пример и того и другого.

Вообще мне это нужно для процедуры, превращающей кривой-косой html в чистенький xml.
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.04.2007 (Пт) 12:10

Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.04.2007 (Пт) 12:49

С htmlent.dtd и как объявлять объекты разобрался, а как внедрить описание в сам xml? На текст
Код: Выделить всё
<!ENTITY nbsp "& #32;"><root>&nbsp;</root>
ругается словами "Не допускается обявление DTD вне DTD".
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.04.2007 (Пт) 12:52

Наверное, надо <!DOCTYPE> снаружи?
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.04.2007 (Пт) 13:07

Наверное? Не знаю. Почему и спрашиваю.
Код: Выделить всё
<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.0 Transitional//EN"" /><!ENTITY nbsp ""& #32;""><root>&nbsp;</root>
дает ошибку "требуется строковый литерал". В доктайпах я не копенгаген, поэтому не знаю какой и куда нужно приставить. Если не сложно, пример, а не наводящие вопросы.
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.04.2007 (Пт) 13:20

Ну конечно, ведь открыть MSDN и найти в нём статью "DOCTYPE" -- это неподъёмно сложно...
Код: Выделить всё
<!DOCTYPE root [ <!ENTITY nbsp " "> ]><root>&nbsp;</root>
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.04.2007 (Пт) 13:59

Отнюдь, !DOCTYPE я нашел, но ни про !ENTITY ни про конструкцию <!DOCTYPE root []> там нет ни слова. Как и в MSXML 4.0 SDK.
Код: Выделить всё
doc.loadXML "<!DOCTYPE root [<!ENTITY nbsp ""& #32;"">]><root>&nbsp;</root>"
Элемент "root" используется, но не объявлен в DTD/Schema :wink:
Лучший способ понять что-то самому — объяснить это другому.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 13.04.2007 (Пт) 14:56

собственно, что-то странный по сути xml-документ какой-то :?:

может так:

Код: Выделить всё
<?xml version="1.0"?>
<root/>


или может тебе это надо:

Код: Выделить всё
<?xml version="1.0"?>
<root nbsp=" "/>


Код: Выделить всё
<?xml version="1.0"?>
<nbsp>& #160;</nbsp>

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.04.2007 (Пт) 15:58

Нет, мне нужно, чтобы <root>&любойтекст;</root> загрузилось без ошибок как и <root>любойтекст</root>.

ADD: А вообще-то ты мне подал мысль. &любойтекст; можно заменить на &amp;любойтекст;...
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.04.2007 (Пт) 18:05

Antonariy писал(а):Отнюдь, !DOCTYPE я нашел, но ни про !ENTITY ни про конструкцию <!DOCTYPE root []> там нет ни слова. Как и в MSXML 4.0 SDK.
Код: Выделить всё
doc.loadXML "<!DOCTYPE root [<!ENTITY nbsp ""& #32;"">]><root>&nbsp;</root>"
Элемент "root" используется, но не объявлен в DTD/Schema :wink:

Эх-ох... Вот тебе готовый год:

Код: Выделить всё
Sub Main()
Dim doc As New DOMDocument
doc.async = False
doc.validateOnParse = False
doc.loadXML "<!DOCTYPE root [<!ENTITY nbsp ""& #160;"">]><root>&nbsp;</root>"
Debug.Print Asc(doc.selectSingleNode("/root").Text)
End Sub
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.04.2007 (Пт) 22:23

Ну не надо так тяжело вздыхать :)
Зато я теперь знаю про валидацию...
Кстати, а можно ли отключить различие больших и маленьких букв, а то <root></ROOT> не проходит? И имеет ли смысл doc.async = False если данные грузятся из строки?
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 13.04.2007 (Пт) 22:35

Отключить различение нельзя.
doc.async = False прописано прямо в MSDN в сэмпле в статье про loadXML

[add]
loadXML просто оборачивает вокруг строки IStream, и передаёт его в load; так что естественно, что async оказывает эффект на них обоих
[/add]
Изображение


Вернуться в XML/XSL/XHTML

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

    TopList