Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.09;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.027 c
3-27359
Silver_
2003-09-19 14:22
2003.10.09
нужны SQL cомманды для следующих деиствии (MS Access)


9-27294
Хранитель_7К
2003-04-07 15:44
2003.10.09
Общая нормаль к TriangleStrip ???


1-27552
Wild River
2003-09-29 15:22
2003.10.09
Можно ли в TRichEdit вставить картинку?


1-27558
Relaxxx
2003-09-29 15:53
2003.10.09
TStringList


6-27630
dimIan
2003-08-12 13:57
2003.10.09
Передача запроса серверу, больше 255 символов.