Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XSD вылидация, XSD patterns, REgEx 
V
    Опции темы
Выхухоль
Дата 24.5.2010, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 9.10.2008
Где: Ташкент

Репутация: нет
Всего: 2



Всем привет, помогите с регулярным вырадением в XSD.

Контора с которой мы налаживаем обмен пакетами через их собственный xml формат предоставила нам XSD для генерации и валидации XML.
Все вроди зашибись, единсвенное что так это что есть там пара паттернов внутри XSD-шника, которые не дают мне сделать валидацию сгенерируемого мною XML документа.

пример паттерна: "((18|19|20)\d{2})(((0[1-9]|1[0-2])(0[1-9]|[12][0-9]))|(((0[13-9])|(1[0-
2]))30)|((0[13578]|1[02])31))"

код для валидации использую следующий:
 vr = XmlReader.Create(mesg.XmlMessage, settings); //Сдесь вылетает exception
Exception Message: The Pattern constraining facet is invalid - parsing "RegExpr value" - [x-y] range in reverse order.
Код

public class MessageValidator
    {
        // Validation Error Count
       public int ErrorsCount
       {
           get;
           set;
       }

        // Validation Error Message
       public string ErrorMessage
       {
           get;
           set;
       }

        const string XSDFileName = "SScript.xsd";

        public void Validate(Message mesg)
        {
            try
            {
                // Declare local objects                
                
                XmlReader vr = null;
                XmlSchema schem =XmlSchema.Read(File.Open(XSDFileName,FileMode.Open),ValidationHandler);
                
                // Text reader object
                XmlReaderSettings settings = new XmlReaderSettings();
                settings.ValidationType = ValidationType.Schema;
                settings.Schemas.Add(schem);
                settings.IgnoreWhitespace = true;
                settings.IgnoreComments = true;
                vr = XmlReader.Create(mesg.XmlMessage, settings); //Сдесь вылетает exception
               
                

                // Add validation event handler
               

                // Validate XML data

                while (vr.Read()) ;

                vr.Close();

                // Raise exception, if XML validation fails
                //if (ErrorsCount > 0)
                //{
                //    throw new Exception(ErrorMessage);
                //}

                // XML Validation succeeded
                Console.WriteLine("XML validation succeeded.\r\n");
            }
            catch (Exception error)
            {
                // XML Validation failed
                Console.WriteLine("XML validation failed." + "\r\n" +
                "Error Message: " + error.Message);
            }
        }


       public void ValidationHandler(object sender,
                                         ValidationEventArgs args)
       {
           ErrorMessage = ErrorMessage + args.Message + "\r\n";
           ErrorsCount++;
       }


    }


Помогите плиз народ, чото не могу никак разобраться
PM MAIL ICQ   Вверх
jonie
Дата 25.5.2010, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



13-9 надо записывать как 9-13, аналогично с 0-2 и другими диапазонами - т.е. от меньшего к большему.
Вообще это у вас невалидный паттерн по этой части.

Это сообщение отредактировал(а) jonie - 25.5.2010, 20:31


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Выхухоль
Дата 27.5.2010, 13:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 9.10.2008
Где: Ташкент

Репутация: нет
Всего: 2



Цитата(jonie @  25.5.2010,  20:27 Найти цитируемый пост)
13-9 надо записывать как 9-13, аналогично с 0-2 и другими диапазонами - т.е. от меньшего к большему.


спасибо, но дело оказалось в общем не в этом..

на самом деле в самом XSD файле в паттерне стоял знак возврата каретки, а так как у меня автоматическая переброска строк я этого не замечал,  из за этого все и происходило....
PM MAIL ICQ   Вверх
jonie
Дата 27.5.2010, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



Выхухоль, ну у меня Altova XMLSpy не дает сделать с большего в меньшую сторону диапазон - ругается, так что в любом случае это не лучшая идея


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0657 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.