Чтение информации из .xml файлов

Anatoly
Дата: 22.03.2001 12:22:33
У меня сплошные непонятки с XML
Поможет ли Дедушка Маздай разобраться в следующих вопросах:

1. Можно ли в среде SQL7 создавать DTD for XML?
2. Каким образом можно выгрузить из базы данные непосредственно в *.xml файл?
3. Каким образом можно загрузить данные непосредственно из *.xml?
4. Можно ли процесс передачи информации контролировать с помощью DTD?
Дед Маздай
Дата: 22.03.2001 16:27:16
Уважаемый Anatoly. К сожалению, я не рискну помогать Вам с SQL Server 7.0, т.к. уже изрядно забыл, что в плане XML для него предлагалось. Если для Вас в какой-то степени представляет интерес, что в этом плане творится в SQL Server 2000, то вкратце суть дела в следующем.

1. DTD нельзя, XDR - можно.
Для этого нужно воспользоваться опцией XMLData в предикате FOR XML оператора SELECT. Пример получения схемы из запроса: http://localhost/Northwind/?sql=SELECT+*+FROM+Customers+WHERE+1=0+FOR+XML+AUTO,XMLData&root=root. Я поставил false в условии фильтрации, п.ч. иначе он записи пристегнет к схеме, а глупый парсер этого не поймет и начнет ругаться на то, что больше одного корневого элемента. Понятно, что если делать это не в браузере, а в QA, то можно не страдать: SELECT * FROM Customers FOR XML AUTO, XMLData. В принципе, я припоминаю, что когда-то наряду с XMLData существовала еще и опция DTD, к-я позволяла получить то же самое в DTD-формате (см., напр., один из примеров в статье на MSDN). Сейчас DTD не работает, и мне представляется сомнительной ее дальнейшая поддержка в SQL Server.
2. Напр., так (экспорт табл.Customers в XML-формат) bcp "SELECT * FROM Northwind..Customers FOR XML AUTO" queryout d:\temp©ustomers.xml -T -S(local)\Leshik3 -w -C1251 -r. Открыть получившийся файл любым текстовым редактором и добавить в начало <aaa>, в конец - </aaa>, чт.его можно было смотреть в IE.
3. Изначально эта функциональность не была включена в SQL Server 2000, потому что не успели. Поэтому решили не дожидаться сервис-пака, а выложили это дело сейчас в виде довеска под названием XML for SQL Server 2000 Web Release 1, который реализует а) обновление данных в базе при помощи обычных XML-документов (не запросов) - т.н. синтаксис updategrams и б) bulk load массивных XML-документов в таблицы SQL Server (аналог BULK INSERT).
4. C помощью XDR. Посмотри XML View Mapper 1.0 for SQL Server. Это еще один довесок. Очень полезный графический инструмент. Он позволяет конвертить DTD в XDR, редактировать XDR, привязывать XDR к схеме SQLных объектов в процессе перекачки и т.д.