powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Просьба проверить мой код по XSD-схемкам
6 сообщений из 6, страница 1 из 1
Просьба проверить мой код по XSD-схемкам
    #32860063
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, друзья. Мне после собеседования в одной конторе скинули задачку. Решить-то я её решил, но не уверен, что правильно. Гляньте, пожалуйста:

Условие задачи:

1. Допустим, есть схема данных Tables1.xsd, в которой описан элемент PREDS (контрагенты) с полями:
PRED_ID, NAME, ADDRESS, PHONE, INN, OKPO ... (+другие поля) .
2. Есть вторая схема данных Tables2.xsd, в которой описан элемент SDOCS (товарный документ) c полями:
SDOC_ID, AGENT_ID, ... (+другие поля).

ЗАДАЧА: Необходимо указать, что поле SDOCS.AGENT_ID ссылается (FOREIGN KEY) на поле PREDS.PRED_ID,
которое описано в другой схеме данных. Как это сделать?

Решение:

Я в VS создал две схемы. При работе с Visual Studio я не нашёл возможности визуально мышью провести связь. Пришлось вручную добавить.

В схему table2.xsd я добавил строку:

Код: plaintext
<xs:include schemaLocation="table1.xsd" />

Эта строка позволяет ссылаться на схему из файла table1.xsd

В схему tables2.xsd я добавил ключ:

Код: plaintext
1.
2.
3.
<xs:keyref name="PREDS_SDOCS_FK" refer="Pred_ID_PK"> 
<xs:selector xpath="." /> 
<xs:field xpath="mstns:Pred_ID_PK" /> 
</xs:keyref>




Визуально этой связи в Студии увидеть нельзя.

Вот коды файлов XSD:

table2.xsd

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" 
xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
id="table2"> 
<xs:include schemaLocation="table1.xsd" /> 
<xs:element name="SDOCS"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="SDOC_ID" type="xs:int" /> 
<xs:element name="AGENT_ID" type="xs:int" /> 
</xs:sequence> 
</xs:complexType> 
<xs:key name="SDOC_ID_PK" msdata:PrimaryKey="true"> 
<xs:selector xpath="." /> 
<xs:field xpath="mstns:SDOC_ID" /> 
</xs:key> 
<xs:keyref name="PREDS_SDOCS_FK" refer="Pred_ID_PK"> 
<xs:selector xpath="." /> 
<xs:field xpath="mstns:Pred_ID_PK" /> 
</xs:keyref> 
</xs:element> 
</xs:schema> 

table1.xsd

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<?xml version="1.0" encoding="utf-8" ?> 
<xs:schema elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:mstns="http://tempuri.org/XMLSchema.xsd" 
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" 
id="table1"> 
<xs:element name="PREDS"> 
<xs:complexType> 
<xs:sequence> 
<xs:element name="PRED_ID" type="xs:int" /> 
<xs:element name="NAME" type="xs:string" /> 
<xs:element name="ADDRESS" type="xs:string" /> 
<xs:element name="PHONE" type="xs:string" /> 
<xs:element name="INN" type="xs:long" /> 
<xs:element name="OKPO" type="xs:long" /> 
</xs:sequence> 
</xs:complexType> 
<xs:key name="Pred_ID_PK" msdata:PrimaryKey="true"> 
<xs:selector xpath="." /> 
<xs:field xpath="PRED_ID" /> 
</xs:key> 
</xs:element> 
</xs:schema> 

Буду рад любым Вашим комментариям.
Max Pro
...
Рейтинг: 0 / 0
Просьба проверить мой код по XSD-схемкам
    #32863079
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй создать типизированный датасет с двумя таблицами и связью между ними.
и посмотри на XSD которая будет сгенерирована для этого случая.
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Просьба проверить мой код по XSD-схемкам
    #32863525
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем? Я и в студии могу. Создать таблицы и посмотреть. Тут фенька в том, что не между таблицами надо, а между схемами при условии, что в каждой схеме таблицы разные.
Да ладно, хрен с ними. Если работать придётся с этим - разберёмся, не велика беда. А если меня не возьмут в ту контору, то пускай сами колупаются со своими схемами.
;-)
P.S. Всё же, спасибо за участие, Роман! На таких как ты форум держится.
Max Pro
...
Рейтинг: 0 / 0
Просьба проверить мой код по XSD-схемкам
    #32863769
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще пример из MSXML SDK.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
Example
The following example defines a keyref element that corresponds to the key element in this schema.

<xs:schema 
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
   targetNamespace="namespace1"
        xmlns:r="namespace1"
        elementFormDefault="qualified">

 <xs:element name="root">
  <xs:complexType>
   <xs:sequence>

    <xs:element name="A" type="r:A" maxOccurs="unbounded">
     <xs:keyref name="dummy" refer="r:pNumKey">
      <xs:selector xpath="r:part"/>
      <xs:field xpath="@ref-number"/>
     </xs:keyref>
    </xs:element>

    <xs:element name="B" type="r:B"/>

   </xs:sequence>
  </xs:complexType>

  <xs:key name="pNumKey">
   <xs:selector xpath="r:B/r:part"/>
   <xs:field xpath="@key-number"/>
  </xs:key>

  </xs:element>

 <xs:complexType name="A">
  <xs:sequence>
   <xs:element name="part" maxOccurs="unbounded">
    <xs:complexType>
     <xs:simpleContent>
      <xs:extension base="xs:string">
       <xs:attribute name="ref-number" type="xs:integer"/>
      </xs:extension>
     </xs:simpleContent>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
 </xs:complexType>

 <xs:complexType name="B">
  <xs:sequence>
   <xs:element name="part" maxOccurs="unbounded">
    <xs:complexType>
     <xs:simpleContent>
      <xs:extension base="xs:string">
       <xs:attribute name="key-number" type="xs:integer"/>
      </xs:extension>
     </xs:simpleContent>
    </xs:complexType>
   </xs:element>
  </xs:sequence>
 </xs:complexType>

</xs:schema>Input: key.xml

<root xmlns="namespace1">
  <A>
    <!-- if the ref-number is not equal to one of the key-number, the validation will give error -->
    <part ref-number="1"/>
  </A>
  <A>
    <!-- if the ref-number is not equal to one of the key-number, the validation will give error -->
    <part ref-number="2"/>
  </A>
  <B>
    <part key-number="1"/>
    <part key-number="2"/>
    <part key-number="3"/>
  </B>
</root>

Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
Просьба проверить мой код по XSD-схемкам
    #32865445
Фотография Max Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно.
Короче всё нормально, меня вроде берут. Так что возможно мой e-mail скоро поменяется.
Max Pro
...
Рейтинг: 0 / 0
Просьба проверить мой код по XSD-схемкам
    #32865620
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а кинь весь список вопросов и описание вакансии с $$$. (интересно...)
Posted via ActualForum NNTP Server 1.1
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Просьба проверить мой код по XSD-схемкам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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