Гость
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Схема-XSD. С чего начать? / 15 сообщений из 15, страница 1 из 1
13.08.2010, 14:10
    #36790783
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Раньше работала только с xslt, теперь понадобилось проверить валидность xml-файла, необходимо воспользоваться схемой xsd. Что для этого нужно?
Если раньше для визуализации xml необходимо было добавить в xml строку, связывающую xml с xslt. А как работать с xsd? Я так понимаю, что нужен xsd- редактор или без него можно обойтись? В общем, с чего начать изучение данной темы? Ссылки на литературу и советы приветствуются :)
...
Рейтинг: 0 / 0
13.08.2010, 16:11
    #36791147
Anton_Demin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Альтаир,

http://lmgtfy.com/?q=xsd
...
Рейтинг: 0 / 0
13.08.2010, 22:14
    #36791616
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Альтаирпонадобилось проверить валидность xml-файла, необходимо воспользоваться схемой xsd. Что для этого нужно?Все банально - нужна XSD схема и валидатор
АльтаирЕсли раньше для визуализации xml необходимо было добавить в xml строку, связывающую xml с xslt. А как работать с xsd?Все зависит от того умеет ли Ваш просмотрщик валидировать в XSD схеме. Если да, то нужно в корневой элемент XML-документа добавить атрибут schemaLocation или noNamespaceSchemaLocation в пространстве имени
Код: plaintext
http://www.w3.org/ 2001 /XMLSchema-instance
Если же не умеет и Вы будете валидировать вручную, то все равно присутствует ссылка на схему или нет
АльтаирЯ так понимаю, что нужен xsd- редактор или без него можно обойтись?Учитывая тот факт, что XSD-схема является XML документом, то подойдет любой XML-редактор. Лично я пользуюсь Oxygen, у него удобный Code completion для XSD и XSL, и, кроме того, в наличии имеется валидатор и XSLT отладчик
АльтаирСсылки на литературу и советы приветствуются :)Все банально - W3School и/или MSDN. Больше ничего не нужно
...
Рейтинг: 0 / 0
13.08.2010, 23:31
    #36791677
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Спасибо за ответы, всё более менее прояснилось, создала xsd-схему, скачала кучу валидаторов (XmlValidator-3.0.0.0). С этим всё пока ясно. А возможно ли обойтись без валидатора, то есть сделать это вручную, например для приложения, написанного на С++ или С#, существуют ли стандартные процедуры?
...
Рейтинг: 0 / 0
14.08.2010, 00:22
    #36791699
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Конечно. Для этого есть куча библиотек. Я работаю с MSXML. Для .net используют System.Xml. Еще, из популярных, есть libxml (но как у нее с поддержкой XSD не знаю)
...
Рейтинг: 0 / 0
16.08.2010, 15:35
    #36793816
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Сделала следующим образом:
Код: 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.
using System;
using System.Xml;
using System.Xml.Schema;
using System.IO;

public class Sample
{

    public static void Main()
    {
        using (TextReader xmlSchema = new StringReader(AppDomain.CurrentDomain.BaseDirectory+"Shema.xsd"))
        {
            using (XmlReader schemaReader = XmlReader.Create(xmlSchema))
            {
                // Create the XmlSchemaSet class.
                XmlSchemaSet sc = new XmlSchemaSet();

                // Add the schema to the collection.
                sc.Add("", schemaReader);

                // Set the validation settings.
                XmlReaderSettings settings = new XmlReaderSettings();
                settings.ValidationType = ValidationType.Schema;
                settings.Schemas = sc;
                settings.ValidationType = ValidationType.Schema; 
                settings.ValidationEventHandler += new ValidationEventHandler(ValidationCallBack);

                using (TextReader xmlText = new StringReader(AppDomain.CurrentDomain.BaseDirectory + "1.xml"))
                {
                    // Create the XmlReader object.
                    using (XmlReader reader = XmlReader.Create(xmlText, settings))
                    {
                        // Parse the file. 
                        while (reader.Read()) ;
                    }
                }
            }
        }
    }

    // Display any validation errors.
    private static void ValidationCallBack(object sender, ValidationEventArgs e)
    {
        Console.WriteLine("Validation Error: {0}", e.Message);
    }
}

Но возникла ошибка:
An unhandled exception of type 'System.Xml.XmlException' occurred in System.Xml.dll

Additional information: Недопустимые данные на корневом уровне. Строка 1, позиция 1.
...
Рейтинг: 0 / 0
16.08.2010, 16:28
    #36793961
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
В sc.Add какая-то проблема :(
...
Рейтинг: 0 / 0
16.08.2010, 22:23
    #36794499
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Тынц . Пространство имен он хочет. Без пространства имен никак. Указывать нужно то, которое объявлено в атрибуте targetNamespace схемы
...
Рейтинг: 0 / 0
17.08.2010, 09:27
    #36794733
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Атрибут targetNamespace у меня отсутствует.
xml-файл:
Код: plaintext
1.
2.
3.
4.
<?xml version="1.0" encoding="windows-1251"?>
<?FORM version="0.1"?>
<REPORT>
    ...
</REPORT>

xsd-файл:
Код: plaintext
1.
2.
3.
4.
5.
6.
<?xml version="1.0" encoding="windows-1251"?>
<?FORM version="0.1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
    <xsd:element name="REPORT" type="ReportType"/>
    ...
</xsd:schema>
Пробовала:
sc.Add("", schemaReader);
так:
sc.Add(null, schemaReader);
Также писала пространство имен и в процедуре и в схеме. Та же ошибка
...
Рейтинг: 0 / 0
17.08.2010, 10:08
    #36794810
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Причем если пользоваться стандартным валидатором, то Validation succesfully. То есть xml и xsd валидные.
...
Рейтинг: 0 / 0
17.08.2010, 23:03
    #36796689
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Альтаир
Код: plaintext
1.
2.
3.
4.
5.
6.
<?xml version="1.0" encoding="windows-1251"?>
===><?FORM version="0.1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
    <xsd:element name="REPORT" type="ReportType"/>
    ...
</xsd:schema>
Это, что такое? Попробуйте убрать.
...
Рейтинг: 0 / 0
17.08.2010, 23:04
    #36796691
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Альтаир
Код: plaintext
1.
2.
3.
4.
5.
6.
<?xml version="1.0" encoding="windows-1251"?>
<?FORM version="0.1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">  
    <xsd:element name="REPORT" type="ReportType"/>
    ...
</xsd:schema>
Это, что такое? Попробуйте убрать.
...
Рейтинг: 0 / 0
17.08.2010, 23:09
    #36796695
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Структура xml фиксированная, убрать не могу. Но если всё же убрать - та же самая ошибка. Раз стандартный валидатор ошибок не показал, то видимо ошибка не в файлах, а в программе.
...
Рейтинг: 0 / 0
17.08.2010, 23:16
    #36796702
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Не силен я в .net. Пробуйте валидатором в аттаче. Что он скажет?
...
Рейтинг: 0 / 0
18.08.2010, 09:11
    #36796972
Альтаир
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Схема-XSD. С чего начать?
Спасибо, не понадобилось. Заработало, когда написала так:
Код: plaintext
 sc.Add(null, AppDomain.CurrentDomain.BaseDirectory + "Shema.xsd");
и
Код: plaintext
1.
XmlReader reader = XmlReader.Create(AppDomain.CurrentDomain.BaseDirectory + "1.xml", settings))
                 
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Схема-XSD. С чего начать? / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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