powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как правильно сделать схему...
10 сообщений из 10, страница 1 из 1
Как правильно сделать схему...
    #33453355
Злодей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как правильно описать описать класс "константа" в схеме?

<constant type="ТИП_КОНСТАНТЫ">ЗНАЧЕНИЕ_КОНСТАНТЫ</constant>

ТИП_КОНСТАНТЫ : string number date bool

смысл в том, чтобы значение зависело от типа,
например так правильно:

<constant type="number">12.3</constant>
<constant type="bool">TRUE</constant>
<constant type="string">просто строка</constant>

а так не правильно:
<constant type="bool">12.3</constant> -- значение не соответствует типу
<constant type="boolan">TRUE</constant> -- неправильный тип
...
Рейтинг: 0 / 0
Как правильно сделать схему...
    #33455159
Ay-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По аналогии с этим

Код: 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.
<xs:simpleType name="typeAlignment">
	<xs:restriction base="xs:string">
    		<xs:enumeration value="left"/>
    		<xs:enumeration value="center"/>
    		<xs:enumeration value="right"/>  			
	</xs:restriction>
</xs:simpleType>

<xs:complexType name="TheAlignment">
	<xs:simpleContent>
      		<xs:extension base="typeAlignment">
      		<xs:attribute name="type">
      			<xs:simpleType>
      			<xs:restriction base="xs:string">
      				<xs:enumeration value="alignment"/>
      			</xs:restriction>
      			</xs:simpleType>
      		</xs:attribute>  
      		</xs:extension>
	</xs:simpleContent>
</xs:complexType>

<xs:simpleType name="typeRadio">
  <xs:restriction base="xs:string">
    <xs:enumeration value="Y"/>
    <xs:enumeration value="N"/>
  </xs:restriction>
</xs:simpleType>

<xs:complexType name="TheRadio">
	<xs:simpleContent>
      		<xs:extension base="typeYesNo">
      		<xs:attribute name="type">
      			<xs:simpleType>
      			<xs:restriction base="xs:string">
      				<xs:enumeration value="radio"/>
      			</xs:restriction>
      			</xs:simpleType>      			
      		</xs:attribute> 
      		</xs:extension>
	</xs:simpleContent>
</xs:complexType>

<xs:attribute name="align"		type="typeAlignment"/>
<xs:element name="HasWeb" 	type="TheRadio"/>
...
Рейтинг: 0 / 0
Как правильно сделать схему...
    #33455179
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ay-yПо аналогии с этим
в чем аналогия?
...
Рейтинг: 0 / 0
Как правильно сделать схему...
    #33455210
Ay-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типы с нужной enumeration создать самому. У меня их под рукой нет.
...
Рейтинг: 0 / 0
Как правильно сделать схему...
    #33455214
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ay-yТипы с нужной enumeration создать самому. У меня их под рукой нет.
с bool понятно, но как можно описать (по вашему варианту) string, number и date?
...
Рейтинг: 0 / 0
Как правильно сделать схему...
    #33455251
Ay-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну со стрингом проблем быть не должно
Код: plaintext
<xs:restriction base="xs:string">

с integer тоже полно вариантов в зависимости от условий, ну например

Код: plaintext
1.
<xs:restriction base="xs:positiveInteger">
<xs:restriction base="xs:decimal">

стандартная дата, правда, требует определённого формата, но есть

Код: plaintext
<xs:restriction base="xs:date">

мне, например он не подходил, поэтому сделан вот такой тип

Код: 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.
<xs:simpleType name="typeDate">
	<xs:union>
		<xs:simpleType>
  			<xs:restriction base="xs:date"/>
		</xs:simpleType>
  		<xs:simpleType>
    			<xs:restriction base="xs:token"> 
      				<xs:pattern value="(January|March|May|July|August|October|December) (30|31|[12]{0,1}[0-9]{1}), [0-9]{0,4}"/>
      				<xs:pattern value="February ([12]{0,1}[0-9]{1}), [0-9]{0,4}"/> 
      				<xs:pattern value="(April|June|September|November) (30|[12]{0,1}[0-9]{1}), [0-9]{0,4}"/>
    			</xs:restriction>
  		</xs:simpleType>
 	</xs:union>
</xs:simpleType>

<xs:complexType name="TheDate">
	<xs:simpleContent>
      		<xs:extension base="typeDate">		
      		<xs:attribute name="type">
      			<xs:simpleType>
      			<xs:restriction base="xs:string">
      				<xs:enumeration value="date"/>
      			</xs:restriction>
      			</xs:simpleType>
      		</xs:attribute>
      		</xs:extension>
	</xs:simpleContent>
</xs:complexType>

и вообще с патернами много чего можно сделать.
...
Рейтинг: 0 / 0
Как правильно сделать схему...
    #33455291
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мысль понял.
Осталось только одно - ужесточить XSD схему таким образом, чтобы:
при определенном значении атрибута type="" управлять содержимым значения элемента <constant>. С учетом поддержки стандартной валидации естественно...

Хотя, пожалуй с этого и стоило начать...
...
Рейтинг: 0 / 0
Как правильно сделать схему...
    #33455313
Ay-y
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О!
А вот это у меня и не получилось, хотя и попытки предпринимались и изначальная цель была именно такая.
Потому как создать тип с еnumeration из комплексных типов нельзя.
Ну если вы чего-нибудь придумаете – поделитесь пожалуйста, будет очень интересно.
...
Рейтинг: 0 / 0
Как правильно сделать схему...
    #33455514
Злодей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем ответившим, но вся суть идеи как и заключается в

M0usужесточить XSD схему таким образом, чтобы:
при определенном значении атрибута type="" управлять содержимым значения элемента <constant>. С учетом поддержки стандартной валидации естественно...


в противном случае все это не имеет смысла.
вопрос все еще актуален, если кто знает варианты куда копать, сообщите плз.
...
Рейтинг: 0 / 0
Как правильно сделать схему...
    #33455643
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть попробовать косвенным путем решить данную проблему?
Например в XSLT на выходе анализировать содержимое <constant>???</constant> и в соответствии с этим выставлять соответствующий type
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как правильно сделать схему...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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