Главная страница
    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.008 c
9-27291
Андрей22
2003-04-07 20:26
2003.10.09
Где можно найти исходники программы


6-27632
Gimer
2003-08-11 23:12
2003.10.09
IE вместо TWebbrowser


8-27613
Вячеслав В.К.
2003-06-06 08:47
2003.10.09
Необходимо получить изображение с USB видеокамеры


1-27492
AlexanderSK
2003-09-26 17:30
2003.10.09
Как подлучить список - расширение - приложение - иконка


1-27506
Izyum
2003-09-26 14:19
2003.10.09
Самомодификация exe-файла





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский