Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];

Вниз

Schema Object Model   Найти похожие ветки 

 
meirman   (2003-09-24 17:31) [0]

проблема при работе с xml-схемами через Schema Object Model
который реализованный в msxml4.
Конкретно проблема с доступом к содержимому сложного типа

///
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MSXML2_TLB,ComObj,OleServer;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i,x:integer;
doc1:IXMLDOMDocument2;
nsTarget:widestring;
ixxi:IXMLDOMNode;
is1:ISchema;
schema1:XMLSchemaCache40;
itp1:ISchemaType;
isi1:ISchemaItem;
isct1:ISchemaComplexType;
isic1:ISchemaItemCollection;
cer:ISchemaModelGroup;
begin
schema1:=CreateOleObject("Msxml2.XMLSchemaCache.4.0") as XMLSchemaCache40;//IXMLDOMSchemaCollection2;
nsTarget:="tgtns";
schema1.add(nsTarget,"sch1.xsd ");
is1:=schema1.getSchema(nsTarget);

for i:=0 to is1.types.length-1 do
memo1.Lines.Add(is1.types.item[i].name+" "+IntToStr(i));

itp1:=is1.types.item[0] as ISchemaType;

if itp1.itemType=SOMITEM_COMPLEXTYPE then
begin
isct1:=itp1 as ISchemaComplexType;

if isct1.contentType=SCHEMACONTENTTYPE_ELEMENTONLY then
begin
x:=isct1.contentModel.particles.length; //Здесь выдается ошибка : "Неопознанная ошибка"
end;
end;
end;

end.

-------------------
сама xml-схема

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSPY v2004 rel. 2 U ( http://www.xmlspy.com) by Mustafa (Bimash) -->
<xs:schema targetNamespace="tgtns" xmlns:tg="tgtns" xmlns:xs=" http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="XXX" type="tg:CTP"/>
<xs:complexType name="CTP">
<xs:sequence>
<xs:element name="ytyt" type="xs:date"/>
</xs:sequence>
</xs:complexType>
</xs:schema>


 
Jao   (2003-09-27 10:09) [1]

1. Узнаем namespaceURI этого нужного типа
2. Проверяем добавлен ли этот URI в schema1, если нет - добавляем
3. Затем к этому элементу запос типа:
nlist:=schema1.get(namespaceURI).selectNodes("/*/*[@name=""+typename+""]/*");
4. По результатам запроса получаем Dom-содержимое данного типа и разбираем его в ручную, иначе никак :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.009 c
1-27453
Злодей
2003-09-27 18:38
2003.10.09
Прочитать файл по локалке


1-27445
solo
2003-09-27 17:36
2003.10.09
Что за баг?


3-27314
Дмитрий
2003-09-19 11:39
2003.10.09
Условия запуска базы на другом компьютере


1-27567
Vasily_Ts
2003-09-26 20:45
2003.10.09
Проблема с архивированием каталога из собственной программы


14-27739
Е-Моё имя
2003-09-19 20:02
2003.10.09
На тему яица и курицы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский