powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Описать вторую связь в XSD
6 сообщений из 6, страница 1 из 1
Описать вторую связь в XSD
    #33418596
Soft66
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте! Обращаюсь к знающим людям.
Перекачиваю данные из XML в MSSQL bulkload-ом.
Есть XML файл:
<p1 code="1234"...>
<d1 date="1111" ...>
<q1 price="444"/>
...
<d1/>
...
<p1/>
...

Соответственно в xsd пишу:
<xsd:element name="d1" ms:relation="d1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="q1" ms:relation="q1">
<xsd:annotation>
<xsd:appinfo>
<xsd:relationship parent="d1" parent-key="date" child="q1" child-key="date"/>
</xsd:appinfo>
</xsd:annotation>
<xsd:complexType>
<xsd:attribute name="price">
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="date">
</xsd:complexType>

В данном примере я организовал связь между d1 и q1 по полю date. После перекачки данных в результирующей таблице q1 появляется поле date.
Но поле date не полностью идентифицирует price. В таблицу q1 надо добавить p1.code.
Подскажите пожалуйста как в XSD описать связь q1 и p1. т.е. как сделать так чтобы в результирующей таблице q1 появилось еще одно поле code.
...
Рейтинг: 0 / 0
Описать вторую связь в XSD
    #33418772
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хочу немного поправить: речь здесь не может идти про xml-схемы (xsd). они тут немного не к месту. Я думаю Вы хотели сказать про XDR-схемы сопоставления. И скажу Вам честно - никогда этим не пользуюсь, потому что еще не нашел место, где их УДОБНО И К МЕСТУ можно применять.

Речь идет про SQLXML... насколько я понимаю.
Поэтому лучше установить связку XML -> SQL Server. Через Get или Post загрежать данные и разбирать их с помощью OPENXML.

Чем использовать скрипты для описания связи между таблицами в виде XDR-схемы. Считаю, что это все делается или в связи со слабым знанием возможностей T-SQL (MS SQL Server 2k) или по причине желания продублировать свою работу: т.е. сначала создать структуру БД на T-SQL при создании БД, а затем описывать все ее связи в виде схем. Маразм, неправда-ли?

p.s. С удовольствием выслушаю другие мнения. Вдруг я неправ :)
...
Рейтинг: 0 / 0
Описать вторую связь в XSD
    #33418891
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
M0us...
p.s. С удовольствием выслушаю другие мнения. Вдруг я неправ :)

Очень даже может быть...
Ведь у автора топика речь идет об использовании bulkload возможностей, предоставляемых сервисом SQLXML (как вы правильно догадались).
А это вам - не распарсивать "бесконечный" тип ntext, поступающий на вход какой-нить процедуры закачки данных с помощью OPENXML с последующим распихиванием resultset-ов по таблицам БД.
Обычно, если речь идет о данных не более чем 1-го persistent объекта (т.е. 1-на запись в "шапке", 2-3 записи в "хитрых" атрибутах, 10-20-30-100 записей в "табличных частях"), то можно вполне обойтись и "вашей" схемой (OPENXML + INSERT INTO).
Но бывают задачи по регулярной загрузке большого количества записей (10К-100К-500К) за один раз, и тут без bulkload и предварительного описания схемы не обойтись....(ИМХО).

З.Ы. насчет ответа по существу топика - есть на данном сайте статья А. Шуленина про возможности SQLXML, авось поможет... удачи!!
...
Рейтинг: 0 / 0
Описать вторую связь в XSD
    #33419092
Soft66
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый M0us! я не претендую на знатока XML технологий, поэтому и обратился к Знающим Людям. Применение bulkload (не openxml) обусловлено большим объемом xml файла (>5 Mb). Какие трудности вызывает при этом применение openxml догадайтесь сами.
Кстати, посоветуйте как написать в этом случае XDR схему, а уж как конвертить её в XSD средствами SQLXML я знаю.
Для qu-qu: статья А.Шуленина в этом случае мне не поможет. Я думаю что ответ на мой вопрос в теме тривиальный, только не пойму в какую сторону капать (до этого с xml не сталкивался).
Помогите плиз
...
Рейтинг: 0 / 0
Описать вторую связь в XSD
    #33419166
qu-qu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Soft66...Для qu-qu: статья А.Шуленина в этом случае мне не поможет. Я думаю что ответ на мой вопрос в теме тривиальный, только не пойму в какую сторону капать (до этого с xml не сталкивался).
Помогите плиз

Вот выдержка из MSDN:
Specifying Relationships by Using sql:relationship
...
parent-key
Specifies the parent key of the parent. If the parent key is composed of multiple columns , values are specified with a space between them. There is a positional mapping between the values that are specified for the multicolumn key and for the corresponding child key.
...
child-key
Specifies the child key in the child referring to parent-key in parent. If the child key is composed of multiple attributes (columns), the child-key values are specified with a space between them. There is a positional mapping between the values that are specified for the multicolumn key and for the corresponding parent key.
...(выделено мной).

Т.о., полагаю, что вам достаточно будет написать что-то вроде:
Код: plaintext
1.
2.
3.
...
<sql:relationship parent="d1" parent-key="date code" child="q1" child-key="date code"/>
...

Сам такого пока еще не делал, но результат меня тоже очень интересует - сообщите, пжлст, если что-то получится... удачи!!
...
Рейтинг: 0 / 0
Описать вторую связь в XSD
    #33419219
Soft66
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я в восторге от XML и от знающих людей.
Все работает и очень быстро.
Спасибо qu-qu! Ответ и правда тривиальный.

ЗЫ Надо чаще на MSDN заходить
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Описать вторую связь в XSD
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]