Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.15.5.183] |
|
Сообщ.
#1
,
|
|
|
Пусть есть вот такая xml:
<mechanisms xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> <mechanism>X-OAUTH2</mechanism> <mechanism>X-GOOGLE-TOKEN</mechanism> <mechanism>PLAIN</mechanism> </mechanisms> Требуется, чтобы она проходила валидацию только если присутствует элемент <mechanism>PLAIN</mechanism> именно с контентом "PLAIN". Вот что у меня пока есть: <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='urn:ietf:params:xml:ns:xmpp-sasl' xmlns='urn:ietf:params:xml:ns:xmpp-sasl' elementFormDefault='qualified'> <xs:element name='mechanisms'> <xs:complexType> <xs:all> <xs:element ref='mechanism' minOccurs='1' maxOccurs='1'/> </xs:all> </xs:complexType> </xs:element> <xs:element name="mechanism"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="PLAIN" /> </xs:restriction> </xs:simpleType> </xs:element> </xs:schema> Но, естественно, оно не валидирует xml, в котором есть елементы с другим контентом. Вообще возможно ли сделать то, что я желаю? |
Сообщ.
#2
,
|
|
|
ИМХО, всё, что можно сделать это:
<?xml version="1.0" encoding="windows-1251"?> <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" targetNamespace="urn:ietf:params:xml:ns:xmpp-sasl" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="mechanisms"> <xs:complexType> <xs:sequence> <xs:element maxOccurs="unbounded" name="mechanism"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:pattern value="PLAIN|.{1,}"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> Ваша схема не валидирует xml возможно еще и потому, что в xml-файле несколько элементов <mechanism>, в то время как в схеме указано maxOccurs='1' и элемент взят в тэг <xs:all>, что не допускает повторения вхождения элемента более одного раза. Ну проверка наличия какого-то определенного значения элемента, на мой взгляд, задача не схемы, а алгоритма работы с файлом. Регулярное выражение проверяет на соответствие один элемент, проверить все вхождения скопом не получится. Хотя, может, я что не так понял. Тогда извиняйте. |