Преобразуване XSD на XML

Преобразуване XSD на XML

Моята програма извлича данни от XML файл директно (ChildValues ​​[]). С XML всичко е наред, но имаше задача да получават данни от XSD. Как мога да конвертирате вътрешно XSD-файл на XML-данни?

Вие не ще ви подкани, как да се приложи? Не мога да разбера какво да използвате, за да прочетете стойностите. В XML, то ChildValues ​​[], но и да я подтикне да спи грешки XSD.

Ако не е трудно - прост пример за работа с XSD, pliz. Най-малко като стойност брой. Всички Интернет порови - Ницше полезно не :(

XSD е и XML. Какви са проблемите?

Никъде не е там с надписите :( опцията стойност за съхранение на ценности, и XML непременно по драг? Тогава защо XSD е необходимо, ако е възможно да се вземе целия Стар XML?

но имаше задача да получават данни от XSD.

Определяте първо, има ли данни, независимо дали имате нужда от XSD и всичко останало.
Тогава ал хора мозъка.

Разработва се съхраняват предмети и техните свойства в двустранен XSD-файл (например, компоненти TLabel и свързването на надписа). Моята програма трябва да свалите този файл и добавяне на тези обекти за формата.

Същото е и с XML, което направих, всичко е просто и твърд проводим рейк. Дори и аз не разбирам как да се отнася до конкретен елемент, файлова структура носи главоболие.

XSD nafik не ми трябва, но файловете на клиента, не могат да направят нищо :(

Дори и аз не разбирам как да се отнася до конкретен елемент

Да, точно като в обикновен XML.
Защото XSD е и XML.

XSD - диаграма, описваща XML документ
в XSD само държат областта, техните типове данни, тяхната последователност и нищо друго.
трябва да се съхраняват в отделен XML документ данни. За да се провери съответствието (валидиране), за да заредите XML анализатора да се свърже схемата на XSD
XMLValidate.js:
Var sOutput = validateFile ( "100000.xml");
WScript.Echo (sOutput);

функционира validateFile (strFile)
# XA0; # XA0; // Създаване на схема на кеша и добавете books.xsd към него.
# XA0; # XA0; VAR х = нов ActiveXObject ( "MSXML2.XMLSchemaCache.4.0");
# XA0; # XA0; xs.add ( "", "ICHB_EA.xsd");
# XA0; # XA0; // Създаване на XML DOMDocument обект.
# XA0; # XA0; Var XD = нов ActiveXObject ( "MSXML2.DOMDocument.4.0");
# XA0; # XA0; // Присвояване на схема кеша на DOMDocument "и
# XA0; # XA0; // събиране схеми.
# XA0; # XA0; xd.schemas = х;
# XA0; # XA0; // Load books.xml като документ DOM.
# XA0; # XA0; xd.async = фалшива;
# XA0; # XA0; xd.validateOnParse = вярно;
# XA0; # XA0; xd.resolveExternals = вярно;
# XA0; # XA0; xd.load (strFile);

# XA0; # XA0; // Назад валидни резултати в съобщение на потребителя.
# XA0; # XA0; ако (! Xd.parseError.errorCode = 0)
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; се върне ( "Неуспешна проверка на" + strFile +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; "\ П =====================" +; # XA0
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; "\ nReason:" + xd.parseError.reason +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; "\ nSource:" + xd.parseError.srcText +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; "\ nLine:" + xd.parseError.line + "\ п");
# XA0; # XA0;>
# XA0; # XA0; останало
# XA0; # XA0; # XA0; # XA0; се върне ( "Потвърждаването бе успешно за" + strFile +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; "\ п ====================== \ п" +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; xd.xml + "\ п");
>

OK, за XML:
# XA0; резултат: = xml.ChildNodes [ "възел"] [ChildValues ​​"елемент"] ;. *
вече за XSD, създаден на базата на една и съща XML използване на XML Mapper, а не рула. Къде да копаят?

И къде виждаш в XSD възел, наречен "възел"?

Тогава как мога да се обърнат към "име на елемент" съдържание на> cantalia # XA0; (24/08/07 11:12) [4]
?

Благодаря ви и също :(


> [13] cantalia # XA0; (24.08.07 11:57)

XS: - пространство от имена
трябва да го посочите при достъп до възела.
Ако искате да го игнорирате, можете да (например XPath)
rootNode.selectSingleNode ( "* [местно име () =" елемент "]")

Да кажем, че аз трябва да се оттегли от XSD (вж. [4]), стойността

Послед-няма нужда да се пише:
резултат: = xml.ChildNodes [ "XS: елемент"] ChildValues ​​[ "име"] ;.
?
Не съм правил от :(

Var
# XA0; Doc: TXMLDocument;
# XA0; възел: IXMLNode;
# XA0; V: OleVariant;

# XA0; Doc: = TXmlDocument.Create (самостоятелно);
# XA0; Doc.LoadFromFile ( "C: \ test.xsd");
# XA0; Doc.Active: = вярно;
# XA0; възел: = Doc.DocumentElement;
# XA0; V: = Node.ChildNodes [ "XS: елемент"] атрибути [ "име"] ;.

Постоянно пише "Само един горен елемент ниво е позволено в един документ XML".
Пример Вие сте абсолютно идентичен с моя. Кълне. Какъв е проблемът?

> cantalia # XA0; (24/08/07 13:56) [19]
Всички разбра, грешката е в посочването на XML, вместо възел [11 см]
Node: = Doc.DocumentElement;
резултат: = xml.ChildNodes [ "възел"] ChildValues ​​[ "елемент"] ;. # XA0; // грешка!
резултат: = node.ChildNodes [ "възел"] ChildValues ​​[ "елемент"] ;. // OK

Благодаря на всички ви много, отделен Уважение clickmaker :)

Друг въпрос: как да се движат на следващия. елемент в цикъла?


# XA0;
# XA0; # XA0;
# XA0; # XA0; # XA0;
# XA0; # XA0; # XA0;
# XA0; # XA0; # XA0;
# XA0; # XA0;

# XA0;

В този файл трябва да се редуват, за да получите TImage, TLabel и TBitBtn.
Аз правя така:
Node.ChildNodes.Nodes [ "complexType"] [ChildNodes "последователност"] ChildNodes [ "елемент"] .Attributes [ "име"] ..;

Това не води до същия TImage атрибут. Как да получите списък с всички атрибути?

защото: = 0 до ChildNodes.Count-1