Главная страница
    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.007 c
14-27658
heady
2003-09-17 13:45
2003.10.09
вопрос по bat нику можно?


3-27410
AlexanderSK
2003-09-18 10:29
2003.10.09
Запрос с параматром


11-27421
SPeller
2003-01-29 11:58
2003.10.09
Ещё одна радость за KOL


4-27793
DelphiNew
2003-08-04 10:49
2003.10.09
Убийство процессов


14-27701
Layner
2003-09-19 11:45
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский