Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XML Schema... спотыкание на ровном месте / 10 сообщений из 10, страница 1 из 1
07.12.2005, 19:41
    #33423468
Copc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML Schema... спотыкание на ровном месте
Нужно составить схему для вот такого:
<?xml version="1.0" encoding="UTF-8"?>
<gh:test xmlns:gh="www.my.ru" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="www.my.ru
D:\DTD\Test.xsd">
<gh:obj>
<gh:url>www.my.ru</gh:url>
<gh:url>
<gh:href>www.my.ru</gh:href>
<gh:name>www.my.ru</gh:name>
</gh:url>
</gh:obj>
</gh:test>
Т.е. элемент gh:url либо просто содержит урл (текст) либо два элемента. Так вот такой простой случай меня не получается записать в схеме. Самое простое вот так:
<xs:complexType name="urlComplex" mixed="true">
<xs:sequence>
<xs:element name="href" type="xs:string" minOccurs="0" maxOccurs="1"/>
<xs:element name="name" type="xs:string" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
Но это не правильно, поскольку разрешит даже это:
<gh:url>www.my.ru
<gh:href>www.my.ru</gh:href>
<gh:name>www.my.ru</gh:name>www.my.ru
</gh:url>
Долго думал, но так и не нашел выхода. А он есть?
...
Рейтинг: 0 / 0
08.12.2005, 12:41
    #33424806
M0us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML Schema... спотыкание на ровном месте
думаю, лучше отказаться от
Код: plaintext
<gh:url>www.my.ru</gh:url>

и принять за минимум
Код: plaintext
<gh:url href="www.my.ru"/>

тогда будет так...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
targetNameSpace="gh"
...
<xs:complexType name="url">
  <xs:annotation>
    <xs:documentation>описание</xs:documentation>
  </xs:annotation>
  <xs:attribute ref="url" use="required"/>
  <xs:attribute ref="name"/>
...
...
Рейтинг: 0 / 0
08.12.2005, 12:44
    #33424821
M0us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML Schema... спотыкание на ровном месте
сорри.. атрибуты сделать так:
Код: plaintext
<xs:attribute name="name" type="xs:string"/>
...
Рейтинг: 0 / 0
08.12.2005, 20:28
    #33426090
Copc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML Schema... спотыкание на ровном месте
Спасибо за ответ... будем считать, что решить исходную задачу с помощь схем нельзя.

Вообще кривая какая-то эта вещь - схемы. Недоделанная:(
...
Рейтинг: 0 / 0
08.12.2005, 21:58
    #33426174
M0us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML Schema... спотыкание на ровном месте
xml и все что с ним связано хороши тем, что могут производить обмен информацией. А если Вы пытаетесь задавать логику приложения на уровне XSD, то ничего не выйдет. Работая с XML - нужно забыть про стандартное программирование. И подумать о прекрасных зеленых деревьях ;)
...
Рейтинг: 0 / 0
08.12.2005, 23:49
    #33426241
Copc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML Schema... спотыкание на ровном месте
M0usxml и все что с ним связано хороши тем, что могут производить обмен информацией. А если Вы пытаетесь задавать логику приложения на уровне XSD, то ничего не выйдет. Работая с XML - нужно забыть про стандартное программирование. И подумать о прекрасных зеленых деревьях ;)
Не очень понял про стандартное программирование...
На уровне XSD я хотел задать правила проверки XML документов дабы обеспечить дополнительную безопасность. И все:)
...
Рейтинг: 0 / 0
09.12.2005, 11:00
    #33426797
M0us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML Schema... спотыкание на ровном месте
кстати, при валидации
Код: plaintext
1.
2.
3.
4.
<gh:url>www.my.ru
<gh:href>www.my.ru</gh:href>
<gh:name>www.my.ru</gh:name>www.my.ru
</gh:url>

будет ошибка, если xsd
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<xs:element name="url">
<xs:complexType>
<xs:complexContent>
<xs:sequence>
<xs:element name="href" minOccurs="1" type="xs:string"/>
...
</xs:element>
<xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string"/>
...
</xs:element>
<xs:sequence>
</xs:complexContent>
</xs:complexType>
</xs:element>

ошибка:
что-то типа в данном контексте текст запрещен (www.my.ru)
...
Рейтинг: 0 / 0
09.12.2005, 16:44
    #33427965
Copc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML Schema... спотыкание на ровном месте
M0usкстати, при валидации
Код: plaintext
1.
2.
3.
4.
<gh:url>www.my.ru
<gh:href>www.my.ru</gh:href>
<gh:name>www.my.ru</gh:name>www.my.ru
</gh:url>

будет ошибка, если xsd
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<xs:element name="url">
<xs:complexType>
<xs:complexContent>
<xs:sequence>
<xs:element name="href" minOccurs="1" type="xs:string"/>
...
</xs:element>
<xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string"/>
...
</xs:element>
<xs:sequence>
</xs:complexContent>
</xs:complexType>
</xs:element>

ошибка:
что-то типа в данном контексте текст запрещен (www.my.ru)
Это потому что Вы не поставили mixed="true". Там же смешанное содержимое - на одном уровне и текст и элементы.
...
Рейтинг: 0 / 0
12.12.2005, 10:26
    #33429917
M0us
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML Schema... спотыкание на ровном месте
Вам это же и нужно было, не так ли?
...
Рейтинг: 0 / 0
15.12.2005, 18:42
    #33439172
Copc
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
XML Schema... спотыкание на ровном месте
M0usВам это же и нужно было, не так ли?
Нет, не так:)
Мне нужно было или так:
<gh:url>www.my.ru</gh:url>
Или так:
<gh:url>
<gh:href>www.my.ru</gh:href>
<gh:name>www.my.ru</gh:name>
</gh:url>
Тут нет смешанного содержимого.
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / XML Schema... спотыкание на ровном месте / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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