![]() |
|
|
![]()
|
|
| i... |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 6.5.2003 Репутация: нет Всего: нет |
Задача: нужно сделать реляционную базу данных, используя xml. Создаю xml'ку и описываю в ней нужные таблицы и поля. В XML Mapper'e делаю из xml datapacket, и все работает: можно как читать данные из datapacket, так и записывать. Но это не то, что нужно! Нужно работать с xml напрямую, использую transformation (*.xtr файлики). В XML Mapper создал два файла: ToDp.xtr (XML to DataPacket) и ToXml.xtr (DataPacket to XML). Подключил их в Delphi при помощи XMLTransformProvider... Данные отображаются, пробую записать данные в БД, добавив пару строчек, а их в xml'ке нет. Прочитал хелп, зря читал, точно так же я все делал.
Подскажите, пожалуйста, кто сталкивался с таким же и кто не сталкивался, в чем проблема. |
|||
|
||||
| Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Покажи код
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
| i... |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 6.5.2003 Репутация: нет Всего: нет |
Сам xml (db.xml): <?xml version="1.0" ?> <database> <first> <one>1</one> <two>2</two> <three>3</three> </first> </database> Плюс файлы transformations, сделанные при помощи XML Mapper. Из xml to datapacket (ToDP.xtr): <XmlTransformation Version="1.0"><Transform Direction="ToCds"><SelectEach dest="DATAPACKET\ROWDATA\ROW" from="\database\first"><Select dest="@one" from="\one"/><Select dest="@two" from="\two"/><Select dest="@three" from="\three"/></SelectEach></Transform><XmlSchema RootName="database"><![CDATA[<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="database" type="databaseType"/> <xs:complexType name="databaseType"> <xs:sequence> <xs:element name="first" type="firstType"/> </xs:sequence> </xs:complexType> <xs:element name="first" type="firstType"/> <xs:complexType name="firstType"> <xs:sequence> <xs:element name="one" type="oneType"/> <xs:element name="two" type="twoType"/> <xs:element name="three" type="threeType"/> </xs:sequence> </xs:complexType> <xs:element name="one" type="oneType"/> <xs:simpleType name="oneType"> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:element name="two" type="twoType"/> <xs:simpleType name="twoType"> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:element name="three" type="threeType"/> <xs:simpleType name="threeType"> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:schema>]]></XmlSchema><CdsSkeleton/><XslTransform/><Skeleton><![CDATA[<?xml version="1.0"?><DATAPACKET Version="2.0"><METADATA><FIELDS><FIELD attrname="one" fieldtype="string" WIDTH="32"/><FIELD attrname="two" fieldtype="string" WIDTH="32"/><FIELD attrname="three" fieldtype="string" WIDTH="32"/></FIELDS><PARAMS/></METADATA><ROWDATA/><METADATA><FIELDS><FIELD attrname="one" fieldtype="string" WIDTH="32"/><FIELD attrname="two" fieldtype="string" WIDTH="32"/><FIELD attrname="three" fieldtype="string" WIDTH="32"/></FIELDS><PARAMS/></METADATA><ROWDATA/></DATAPACKET> ]]></Skeleton></XmlTransformation> Из datapacket to xml (ToXML.xtr): <XmlTransformation Version="1.0"><Transform Direction="ToXml"><SelectEach from="DATAPACKET\ROWDATA\ROW" dest="\Document\ROW"><Select from="@one" dest="\one"/><Select from="@two" dest="\two"/><Select from="@three" dest="\three"/></SelectEach></Transform><XmlSchema RootName="Document"><![CDATA[<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="Document" type="DocumentType"/> <xs:complexType name="DocumentType"> <xs:sequence> <xs:element name="ROW" type="ROWType" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:element name="ROW" type="ROWType"/> <xs:complexType name="ROWType"> <xs:sequence> <xs:element name="one" type="oneType"/> <xs:element name="two" type="twoType"/> <xs:element name="three" type="threeType"/> </xs:sequence> </xs:complexType> <xs:element name="one" type="oneType"/> <xs:simpleType name="oneType"> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:element name="two" type="twoType"/> <xs:simpleType name="twoType"> <xs:restriction base="xs:string"/> </xs:simpleType> <xs:element name="three" type="threeType"/> <xs:simpleType name="threeType"> <xs:restriction base="xs:string"/> </xs:simpleType> </xs:schema>]]></XmlSchema><CdsSkeleton><![CDATA[<DATAPACKET Version="2.0"><METADATA><FIELDS><FIELD attrname="one" fieldtype="string" WIDTH="32"/><FIELD attrname="two" fieldtype="string" WIDTH="32"/><FIELD attrname="three" fieldtype="string" WIDTH="32"/></FIELDS><PARAMS/></METADATA><ROWDATA/><METADATA><FIELDS><FIELD attrname="one" fieldtype="string" WIDTH="32"/><FIELD attrname="two" fieldtype="string" WIDTH="32"/><FIELD attrname="three" fieldtype="string" WIDTH="32"/></FIELDS><PARAMS/></METADATA><ROWDATA/></DATAPACKET> ]]></CdsSkeleton><XslTransform/><Skeleton><![CDATA[<?xml version="1.0"?> <Document><ROW><one></one><two></two><three></three></ROW></Document> ]]></Skeleton></XmlTransformation> В Delphi на форму кидаю DBGrid, XMLTransformProvider, ClientDataSet, DataSource. В XMLTransformProvider заполняю: XMLDataFile := db.xml; TransformationFile := ToDp.xtr (это у TransformRead); TransformationFile := ToXML.xtr (это у TransformWrite); В ClientDataSet: ProviderName := XMLTransformProvider; Active := True; В DataSource: DataSet := ClientDataSet; В DBGrid: DataSource := DataSource; И все! Press F9. В DBGrid три колонки One, Two, Three и данные 1, 2, 3, соответственно. Читать - читаем, а писать в базу - не пишем. |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |