| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506 |
- <?xml version="1.0" encoding="UTF-8"?>
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
- targetNamespace="http://biuro.biall-net.pl/xmlschema_procesy5/default_db_xml_cache/struktura_silnika_obiektow_procesy5.xsd"
- xmlns:sso_procesy5="http://biuro.biall-net.pl/xmlschema_procesy5/default_db_xml_cache/struktura_silnika_obiektow_procesy5.xsd"
- vc:minVersion="1.1"
- xmlns:system_cache__appinfo="http://biuro.biall-net.pl/xmlschema_procesy5/default_db_xml_cache/appinfo.xsd"
- xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning">
- <xs:import namespace="http://biuro.biall-net.pl/xmlschema_procesy5/default_db_xml_cache/appinfo.xsd"
- schemaLocation="../system_cache/appinfo.xsd"/>
- <xs:complexType name="OBSZAR"/>
- <xs:element name="A" type="sso_procesy5:OBSZAR"/>
- <xs:element name="B" type="sso_procesy5:OBSZAR"/>
- <xs:element name="ROOT_A">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="CACHE">
- <xs:complexType>
- <xs:attribute name="ID_A"/>
- <xs:attribute name="ID_B"/>
- <xs:attribute name="ID_C"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="A">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="CACHE">
- <xs:complexType>
- <xs:attribute name="ID_A"/>
- <xs:attribute name="ID_B"/>
- <xs:attribute name="ID_C"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="ID_SEQ_A"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="ID_A"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="CHILD_B">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="sso_procesy5:ROOT_A"/>
- <xs:element name="CACHE">
- <xs:complexType>
- <xs:attribute name="ID_A"/>
- <xs:attribute name="ID_B"/>
- <xs:attribute name="ID_C"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="A">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="CACHE">
- <xs:complexType>
- <xs:attribute name="ID_A"/>
- <xs:attribute name="ID_B"/>
- <xs:attribute name="ID_C"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="ID_SEQ_B"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="ID_B"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="CHILD_C">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="sso_procesy5:CHILD_B"/>
- <xs:element name="CACHE">
- <xs:complexType>
- <xs:attribute name="ID_A"/>
- <xs:attribute name="ID_B"/>
- <xs:attribute name="ID_C"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="A">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="CACHE">
- <xs:complexType>
- <xs:attribute name="ID_A"/>
- <xs:attribute name="ID_B"/>
- <xs:attribute name="ID_C"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="ID_SEQ_C"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="ID_C"/>
- </xs:complexType>
- </xs:element>
- <xs:complexType name="COLUMN_NAME">
- <xs:attribute ref="system_cache__appinfo:id"/>
- </xs:complexType>
- <xs:simpleType name="COLUMN_VALUE_INSTANCE">
- <xs:restriction base="xs:string">
- <xs:enumeration value="true"/>
- <xs:enumeration value="derived"/>
- <xs:enumeration value=""/>
- </xs:restriction>
- </xs:simpleType>
- <xs:simpleType name="COLUMN_VALUE_in_ELEMENT_NAME">
- <xs:restriction base="xs:string"/>
- </xs:simpleType>
- <xs:simpleType name="COLUMN_VALUE_in_KEY_ID">
- <xs:annotation>
- <xs:documentation>W bazie danych beda to xs:INT ale tutaj beda dane do evaluacji</xs:documentation>
- </xs:annotation>
- <xs:restriction base="xs:string"/>
- </xs:simpleType>
- <xs:attribute name="evaluate_key_value"/>
- <xs:attribute name="read_key_value"/>
- <xs:complexType name="COLUMN_VALUE_in_KEY_ID_to_eval">
- <xs:annotation>
- <xs:documentation>W bazie danych beda to xs:INT ale tutaj beda dane do evaluacji</xs:documentation>
- </xs:annotation>
- <xs:attribute ref="sso_procesy5:evaluate_key_value"/>
- </xs:complexType>
- <xs:complexType name="COLUMN_VALUE_in_KEY_ID_to_read">
- <xs:attribute ref="sso_procesy5:read_key_value"/>
- </xs:complexType>
- <xs:element name="create_sql_tables_from_go_recurse_from_root_by_build_element_with_cache">
- <xs:complexType>
- <xs:choice maxOccurs="unbounded">
- <xs:element name="structure_table_root_instance">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="column_ELEMENT_ID"
- type="sso_procesy5:COLUMN_VALUE_in_KEY_ID_to_read"/>
- <xs:element name="column_ELEMENT_NAME"
- type="sso_procesy5:COLUMN_VALUE_in_ELEMENT_NAME"> </xs:element>
- <xs:element maxOccurs="0" minOccurs="0" name="column_REMOTE_ID"/>
- <xs:element maxOccurs="unbounded" name="columns_CACHE_INSTANCE">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="COLUMN_NAME"
- type="sso_procesy5:COLUMN_NAME"/>
- <xs:element name="COLUMN_VALUE"
- type="sso_procesy5:COLUMN_VALUE_INSTANCE"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="table_name" type="xs:ID" use="required"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="structure_table_child_instance">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="column_ELEMENT_ID"
- type="sso_procesy5:COLUMN_VALUE_in_KEY_ID_to_eval"/>
- <xs:element name="column_ELEMENT_NAME"
- type="sso_procesy5:COLUMN_VALUE_in_ELEMENT_NAME"> </xs:element>
- <xs:element maxOccurs="0" minOccurs="0" name="column_REMOTE_ID"/>
- <xs:element maxOccurs="unbounded" name="columns_CACHE_INSTANCE">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="COLUMN_NAME"
- type="sso_procesy5:COLUMN_NAME"/>
- <xs:element name="COLUMN_VALUE"
- type="sso_procesy5:COLUMN_VALUE_INSTANCE"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="table_name" type="xs:ID" use="required"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="structure_table_sequence">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="column_ELEMENT_ID"
- type="sso_procesy5:COLUMN_VALUE_in_KEY_ID_to_read"/>
- <xs:element name="column_PARENT_ID">
- <xs:complexType>
- <xs:annotation>
- <xs:documentation>W bazie danych beda to xs:INT ale tutaj beda dane do evaluacji</xs:documentation>
- </xs:annotation>
- <xs:attribute ref="sso_procesy5:evaluate_key_value"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="column_CACHE_INSTANCE_ID">
- <xs:annotation>
- <xs:documentation>Oznaczenie numeru ID instancji glownej - sluzy do cacheowania obiektow</xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:attribute ref="sso_procesy5:evaluate_key_value"/>
- </xs:complexType>
- </xs:element>
- <xs:element maxOccurs="unbounded" name="columns_CACHE_INSTANCE">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="COLUMN_NAME"
- type="sso_procesy5:COLUMN_NAME"/>
- <xs:element name="COLUMN_VALUE"
- type="sso_procesy5:COLUMN_VALUE_INSTANCE"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="table_name" type="xs:ID" use="required"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="structure_table_reference">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="column_ELEMENT_ID"
- type="sso_procesy5:COLUMN_VALUE_in_KEY_ID_to_read"/>
- <xs:element name="column_PARENT_ID">
- <xs:complexType>
- <xs:annotation>
- <xs:documentation>W bazie danych beda to xs:INT ale tutaj beda dane do evaluacji</xs:documentation>
- </xs:annotation>
- <xs:attribute ref="sso_procesy5:evaluate_key_value"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="column_REMOTE_ID">
- <xs:complexType>
- <xs:attribute ref="sso_procesy5:evaluate_key_value"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="column_CACHE_INSTANCE_ID">
- <xs:annotation>
- <xs:documentation>Oznaczenie numeru ID instancji glownej - sluzy do cacheowania obiektow</xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:attribute ref="sso_procesy5:evaluate_key_value"/>
- </xs:complexType>
- </xs:element>
- <xs:element maxOccurs="unbounded" name="column_CACHE_INSTANCE">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="COLUMN_NAME"
- type="sso_procesy5:COLUMN_NAME"/>
- <xs:element name="COLUMN_VALUE"
- type="sso_procesy5:COLUMN_VALUE_INSTANCE"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="table_name"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="structure_table_value">
- <xs:annotation>
- <xs:documentation>For values of elements and also attributes. </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="column_ELEMENT_ID"
- type="sso_procesy5:COLUMN_VALUE_in_KEY_ID_to_read"/>
- <xs:element name="column_PARENT_ID">
- <xs:complexType>
- <xs:annotation>
- <xs:documentation>W bazie danych beda to xs:INT ale tutaj beda dane do evaluacji</xs:documentation>
- </xs:annotation>
- <xs:attribute ref="sso_procesy5:evaluate_key_value"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="column_VALUE" type="xs:string"/>
- <xs:element maxOccurs="unbounded" name="columns_CACHE_INSTANCE">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="COLUMN_NAME"
- type="sso_procesy5:COLUMN_NAME"/>
- <xs:element name="COLUMN_VALUE"
- type="sso_procesy5:COLUMN_VALUE_INSTANCE"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="table_name" type="xs:ID" use="required"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="structure_434_info"/>
- <xs:element
- ref="sso_procesy5:create_sql_tables_from_go_recurse_from_root_by_build_element_with_cache"
- />
- </xs:choice>
- </xs:complexType>
- </xs:element>
- <xs:element name="create_sql_table_cache_instance">
- <xs:complexType>
- <xs:attribute name="instance_id_table" type="xs:IDREF"/>
- <xs:attribute name="instance_id_value" type="xs:IDREF">
- <xs:annotation>
- <xs:documentation>Numer ID danego typu instancji, zapisanej w tabeli z @ID danej instancji</xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:complexType>
- </xs:element>
- <xs:complexType name="INSTANCE">
- <xs:annotation>
- <xs:documentation>Przykładowy obiekt instance np. REWIR, do którego w relacji jest BUDYNEK (INSTANCE2).
- Instancje powinny być zgodne z numerami #ID (primary_key) FLAT_TABLE, w związku z czym powinna istniec procedura importu rekordow z tabeli plaskiej do danych obiektowych powinna wyglądać następująco
- WHEN INSERT into FLAT_TABLE (ID,SOME_COLUMN,SOME_COLUMN2) then
- insert into INSTANCE ($ID)
- insert into INSTANCE_SOME_COLUMN(@OBJECT_ID,@value) values ($ID,$SOME_COLUMN);
- insert into INSTANCE_SOME_COLUMN2(@OBJECT_ID,@value) values ($ID,$SOME_COLUMN2);
- - liczniki @counter_value powinny sie dodac same na bazie triggerow)
-
- procedura importu z weryfikacja powinna dzialac tak samo
- PROCEDURE_IMPORT_UPDATE_FLAT_TABLE foreach FLAT_TABLE {
- j.w.
- }
- </xs:documentation>
- </xs:annotation>
- <xs:sequence>
- <xs:element name="FLAT_TABLE">
- <xs:annotation>
- <xs:documentation>Skojarzona z dana instancja tabela plaska, ktora powinna miec zgodny numer OBJECT_ID z kluczem tej tabeli, czyli w wiekszosci przypadków ta sama wartosc pola ID. W zasadzie te dane powinny przechodzic 1:1</xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:sequence>
- <xs:element name="ID">
- <xs:complexType>
- <xs:attribute name="OBJECT_ID" use="required"/>
- </xs:complexType>
- </xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="SOME_COLUMN">
- <xs:complexType>
- <xs:attribute name="SOME_COLUMN_VALUE"/>
- </xs:complexType>
- </xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="SOME_COLUMN_WITH_REFS">
- <xs:annotation>
- <xs:documentation>w przypadku, kiedy dany obiekt plaski zotsał ustawiony, że jest w relacji do jakiegoś innego obiektu, czyli np. REWIR moze zawierac BUDYNEK, oraz relacja zostala nazwana @id=REWIR_do_BUDUNEK, to powinna sie utworzyc kolumna w tabeli BUDYNEK o nazwie @id(REWIR_do_BUDYNEK), która będize zawierać @OBJECT_ID z tabeli BUDYNEK, która to kolumna powinna być wytriggerowana tak, że po zmianie relacji w element_refs będzie ona zaktualizowana. Założenia dla triggera:
- when update element_refs then
- update</xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:attribute name="OBJECT_ID"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element maxOccurs="0" name="INSTANCES" minOccurs="0">
- <xs:annotation>
- <xs:documentation>NIEAKTUALNE @2015-11-20 - odtwarzamy całą mapę ułożenia obiektu zgodnie z dziecziczeniami
- tabela zawierajaca jakie instanncje reprezentuje dany obiekt - czyli w przypadku obiektu AAAA powinny byc wpisy , ze jest obiektem A, AA, AAA oraz AAAA .
- zalozenia dla triggerowania:
- PROCEDURE INSTANCES_DEREVIATIONS_UPDATE {
- delete from INSTANCES where $OBJECT_ID
- for each dereviations as $OBJECT_ID,$TYPE {
- insert into INSTANCES (OBJECT_ID,TYPE) values ($OBJECT_ID,$TYPE)
- }
- }
- when NEW INSTANCE then call_procedure INSTANCES_DEREVIATIONS_UPDATE
- when UPDATE INSTANCE TYPE on $OBJECT_ID then call_procedure INSTANCES_DEREVIATIONS_UPDATE
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:attribute name="OBJECT_ID" use="required"/>
- <xs:attribute name="TYPE"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="COUNTER">
- <xs:annotation>
- <xs:documentation>Tabela z licznikami dla każdej instancji- aby był osobny licznik kolejności dla każdego z instancji.
- Zasada triggerowania
- WHEN NEW_RECORD on INSTANCE_SOME_COLUMN then
- update COUNTER @counter_value +1;
- return @counter_value + 1;
-
- WHEN UPDATE INSTANCE
-
- REALOCATE(INSTANCE) { nalezy zrealokowac obiekty ustawiajac ich kolejnosc wlasciwa na podstawie danych wejsciowych, czyli jak doszedl jakis element, to musi byc ustawiony jego counter na @counter_value+1
- i wszystkie dane mają zwiększony @counter_value
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:attribute name="OBJECT_ID"/>
- <xs:attribute name="counter_value"/>
- </xs:complexType>
- </xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="INSTANCE_SOME_COLUMN">
- <xs:annotation>
- <xs:documentation>Kazda kolumna z plaskiego wystepuje pod nazwa tabeli np. DEVICES__a123asdad_ID.
- Przy triggerowaniu regula taka:
- when NEW_RECORD on FLAT_TABLE then
- .....
- when field SOME_COLUMN then insert into INSTANCE_SOME_COLUMN(@OBJECT_ID,@counter_value,@value) values
- (`wartosc klucza obiektu np. ID`,`nextval(@counter_value)`,`@SOME_COLUMN_VALUE`)
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:attribute name="OBJECT_ID"/>
- <xs:attribute name="counter_value"/>
- <xs:attribute name="value"/>
- </xs:complexType>
- </xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="element_refs">
- <xs:annotation>
- <xs:documentation>Informacje o relacjach do obcych obiektów z danego obiektu, tabela zawierajaca nr obiektu, licznik oraz @REMOTE_OBJECT_ID odnoszący się do @OBJECT_ID obcego obiektu, gdzie wiemy o jaki typ chodzi na podstawie schematu oraz nazwy tabeli, w której się znajduje dany rekord - bo do każdej relacji jest osobna tabela.
- dane mogą być cacheowane/triggerowane w z tabelami płaskimi, po stronie obiektu docelowego, z zawartością @OBJECT_ID oraz nazwą kolumny=$nazwa_tabeli_relacji(@id ze schematu).
- w związku z czym założenia do triggerowania są takie:
- when UPDATE on element_refs (@OBJECT_ID,@REMOTE_OBJECT_ID)
- then update FLAT_TABLE2 set element_refs2=@OBJECT_ID where #ID=@REMOTE_OBJECT_ID
- w przypadku triggerowania od strony tabeli płaskiej, to wyglądało by to tak:
- when UPDATE FLAT_TABLE2 where #ID=@OBJECT2_ID and element_refs2=@OBJECT_ID
- delete from element_ref where @ID_OBJECT=OLD.@OBJECT_ID
- insert into element_ref where @ID_OBJECT=NEW.@OBJECT_ID
- </xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:attribute name="OBJECT_ID"/>
- <xs:attribute name="counter_value"/>
- <xs:attribute name="REMOTE_OBJECT_ID"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="OBJECT_ID" use="required"/>
- <xs:attribute name="TYPE" use="required">
- <xs:annotation>
- <xs:documentation>Aktualny typ dla którego dany obiekt został zainstancjonowany. Jeżeli obiekt jest typu A i został tylko jako A użyty, to jest tutaj wartość A oraz do INSTANCES tez wchodzi, jako typ A. Natomiast, jeżeli został on użyty jako AAAA, który jest typem dziedziczonym z A/AA/AAA/AAAA, to powinna tam byc wartosc 'AAAA'. </xs:documentation>
- </xs:annotation>
- </xs:attribute>
- <xs:attribute name="ELEMENT_NAME">
- <xs:annotation>
- <xs:documentation>Jezeli element byl uzyty dla zainstancjonowania obiektu - np. w wyniku zadzialania relacji, to nalezy to pole uzupelnic nazwa tego elementu. W zwiazku z czym dany obiekt nie bedzie mogl wystepowa jako dwa typy elementów? TODO czy jest to wlasciwe? TODO Moze to powinno przejsc na tabele INSTANCES?</xs:documentation>
- </xs:annotation>
- </xs:attribute>
- </xs:complexType>
- <xs:complexType name="INSTANCE2">
- <xs:annotation>
- <xs:documentation>Przykładowy inny obiekt - np podrzędny do INSTANCE np. BUDYNEK</xs:documentation>
- </xs:annotation>
- <xs:sequence>
- <xs:element name="FLAT_TABLE">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="ID2">
- <xs:complexType>
- <xs:attribute name="OBJECT_ID" use="required"/>
- </xs:complexType>
- </xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="SOME_COLUMN2">
- <xs:complexType>
- <xs:attribute name="SOME_COLUMN_VALUE"/>
- </xs:complexType>
- </xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="element_refs2">
- <xs:annotation>
- <xs:documentation>w przypadku, kiedy dany obiekt plaski zotsał ustawiony, że jest w relacji do jakiegoś innego obiektu, czyli np. REWIR moze zawierac BUDYNEK, oraz relacja zostala nazwana @id=REWIR_do_BUDUNEK, to powinna sie utworzyc kolumna w tabeli BUDYNEK o nazwie @id(REWIR_do_BUDYNEK), która będize zawierać @OBJECT_ID z tabeli BUDYNEK, która to kolumna powinna być wytriggerowana tak, że po zmianie relacji w element_refs będzie ona zaktualizowana. Założenia dla triggera:
- when update element_refs then
- update</xs:documentation>
- </xs:annotation>
- <xs:complexType>
- <xs:attribute name="OBJECT_ID"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element maxOccurs="0" name="INSTANCES2" minOccurs="0">
- <xs:complexType>
- <xs:attribute name="OBJECT_ID" use="required"/>
- <xs:attribute name="TYPE"/>
- </xs:complexType>
- </xs:element>
- <xs:element name="COUNTER2">
- <xs:complexType>
- <xs:attribute name="OBJECT_ID"/>
- <xs:attribute name="counter_value"/>
- </xs:complexType>
- </xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="INSTANCE_SOME_COLUMN2">
- <xs:complexType>
- <xs:attribute name="OBJECT_ID"/>
- <xs:attribute name="counter_value"/>
- <xs:attribute name="value"/>
- </xs:complexType>
- </xs:element>
- <xs:element maxOccurs="unbounded" minOccurs="0" name="element_refs2">
- <xs:complexType>
- <xs:attribute name="OBJECT_ID"/>
- <xs:attribute name="counter_value"/>
- <xs:attribute name="REMOTE_OBJECT_ID"/>
- </xs:complexType>
- </xs:element>
- </xs:sequence>
- <xs:attribute name="OBJECT2_ID" use="required"/>
- <xs:attribute name="TYPE2" use="required"/>
- <xs:attribute name="ELEMENT2_NAME"/>
- </xs:complexType>
- </xs:schema>
|