Thread View: pl.comp.xml
5 messages
5 total messages
Started by szimano
Thu, 19 Feb 2009 08:58
Klucz XSD dla obiektu parent-child
Author: szimano
Date: Thu, 19 Feb 2009 08:58
Date: Thu, 19 Feb 2009 08:58
60 lines
2873 bytes
2873 bytes
Witam Grupo, Mam taki przykladowy XML <?xml version="1.0" encoding="UTF-8"?> <wszystko> <definicje> <narzad nazwa="oko"> <typ nazwa="kolor"/> <typ nazwa="wielkosc" /> </narzad> <narzad nazwa="noga"> <typ nazwa="ilosc"/> <typ nazwa="liczbaPalcy"/> </narzad> </definicje> <ludzie> <czlowiek nazwa="mama"> <narzad nazwa="oko"> <wartosc nazwa="kolor">zielone</wartosc> <wartosc nazwa="wielkosc">olbrzymie</wartosc> </narzad> <narzad nazwa="noga"> <wartosc nazwa="ilosc">2</wartosc> <wartosc nazwa="liczbaPalcy">10</wartosc> </narzad> <dzieci> <czlowiek nazwa="dziecko"> <narzad nazwa="oko"> <wartosc nazwa="kolor">brazowe</wartosc> <wartosc nazwa="wielkosc">male</wartosc> </narzad> <narzad nazwa="noga"> <wartosc nazwa="ilosc">2</wartosc> <wartosc nazwa="liczbaPalcy">10</wartosc> </narzad> </czlowiek> </dzieci> </czlowiek> </ludzie> </wszystko> I teraz chcialbym tak napisac do niego XSD, zeby 1) nazwy narzadow (jakos nie moglem wymyslic przyjemniejszej nazwy ;-) ) istanily w definicjach (to akurat jest latwe) 2) nazwy pol w <wartosc/> byly wybrane sposrod tych, ktore sa w <typ/ > danego narzadu (czyli, zeby nie dalo sie wpisasc <wartosc nazwa="liczbaPalcy"> wewnatrz oka. Czy to jest w ogole mozliwe ? Google twierdzi, ze nie - ale moze ja po prostu zle szukam. Pytanie numer 2 brzmi - jak zapisac xs:key i xs:keyref, zeby walidowaly mi takze zagniezdzone instancej <czlowiek/> (dzieci moga miec dzieci itd.) ? Jesli zrobie osobny typ <xs:complexType> z nazwa i tam umieszcze referencje do klucza z definicji, otrzymuje blad, ze klucz jest "out of scope" (poza zasiegiem :) ). Dziekuje za pomoc, Tomek
Re: Klucz XSD dla obiektu parent-child
Author: szomiz
Date: Fri, 20 Feb 2009 08:58
Date: Fri, 20 Feb 2009 08:58
34 lines
2503 bytes
2503 bytes
Uzytkownik "szimano" <szimano@szimano.org> napisal w wiadomosci news:7c097922-e5c7-46de-83cf-16346323555f@j35g2000yqh.googlegroups.com... > 2) nazwy pol w <wartosc/> byly wybrane sposrod tych, ktore sa w <typ/ >> danego narzadu (czyli, zeby nie dalo sie wpisasc <wartosc > nazwa="liczbaPalcy"> wewnatrz oka. > Czy to jest w ogole mozliwe ? Google twierdzi, ze nie - ale moze ja po > prostu zle szukam. A co mialby zrobic biedny parser przy natknieciu sie na dwie legalne definicje dla tego samego element? Wylosowac poprawna? Zeby osiagnac zamierzony efekt dokment musialby miec _sztywna_ strkture - tylko xs:sequence oraz minOccurs = maxOccurs dla wszystkich poza ostatnim elementem w sekwencji. Czyli nawet nie wiedzac nic o oczach bedzie trzeba wstawiac puste wezly (zawsze dwa - trafiaja sie ludzie z roznym kolorem lewego i prawego oka). Popelniles blad zakladajac, ze wszystkie narzady maja byc opisywane elementami _narzad_. Miedzy innymi po to jest schema, zeby trzymac w niej a nie w dokmencie ten poziom abstrakcji. > Pytanie numer 2 brzmi - jak zapisac xs:key i xs:keyref, zeby > walidowaly mi takze zagniezdzone instancej <czlowiek/> (dzieci moga > miec dzieci itd.) ? Jesli zrobie osobny typ <xs:complexType> z nazwa i > tam umieszcze referencje do klucza z definicji, otrzymuje blad, ze > klucz jest "out of scope" (poza zasiegiem :) ). Zdefinij klucz w elemencie glownym. sz.
Re: Klucz XSD dla obiektu parent-child
Author: szomiz
Date: Fri, 20 Feb 2009 09:12
Date: Fri, 20 Feb 2009 09:12
13 lines
1553 bytes
1553 bytes
Użytkownik "szomiz" <szomiz@kocha.dostawac.reklamy.przez.net> napisał w wiadomości news:gnlrel$6ie$1@atlantis.news.neostrada.pl... > Zeby osiagnac zamierzony efekt dokment musialby miec _sztywna_ strkture - > tylko xs:sequence oraz minOccurs = maxOccurs dla wszystkich poza ostatnim > elementem w sekwencji. Wroc: tez sie nie da - na jednym poziomie elementy o tej samej nazwie musza byc tego samego typu. I bradzo dobrze ;> sz.
Re: Klucz XSD dla obiektu parent-child
Author: szimano
Date: Fri, 20 Feb 2009 09:37
Date: Fri, 20 Feb 2009 09:37
18 lines
2063 bytes
2063 bytes
szomiz napisał(a): > Popelniles blad zakladajac, ze wszystkie narzady maja byc opisywane > elementami _narzad_. Miedzy innymi po to jest schema, zeby trzymac w niej a > nie w dokmencie ten poziom abstrakcji. Wszystko zalezy od tego co ja chce miesc w xmlu :) Akurat w moim przypadku musze miec zarowno definicje obiektow jak i ich implementacje. Taki use case - trudno mowic, czy popelnilem blad cos zakladajac czy nie - po prostu w xmlu maja znalezc sie takie informacje. Skoro sie tego nie da zwalidowac, bede to sprawdzal przy imporcie. Co do pytania drugiego - jak zdefniuje w elemencie glownym, to chyba mi tylko zwaliduje element glowny ? Bo z tego co szukalem, to ten wykastrowany xpath, ktory mozna uzywac w xsd nie obsluguje descendant itp. Tomek
Re: Klucz XSD dla obiektu parent-child
Author: szomiz
Date: Fri, 20 Feb 2009 11:25
Date: Fri, 20 Feb 2009 11:25
39 lines
2824 bytes
2824 bytes
Użytkownik "szimano" <szimano@szimano.org> napisał w wiadomości
news:c4e014dc-845e-4b24-9177-d42c165b2719@j8g2000yql.googlegroups.com...
> Wszystko zalezy od tego co ja chce miesc w xmlu :) Akurat w moim
> przypadku musze miec zarowno definicje obiektow jak i ich
W tak zwanych "dwojkach" masz bezposredni dostep do definicji oschemwanych
dokmentow. W "jedynkach" mozesz dojsc do nich w banalny sposob tak dom'em
jak i transformacja.
> implementacje. Taki use case - trudno mowic, czy popelnilem blad cos
> zakladajac czy nie - po prostu w xmlu maja znalezc sie takie
> informacje. Skoro sie tego nie da zwalidowac, bede to sprawdzal przy
> imporcie.
Moze i taki case. Trudno mi jednak wyobrazic sobie sytuacje, w ktorej
przewage ma:
narzad[@nazwa='oko']
nad:
oko
skoro wiemy (i wymuszamy), ze dopoki nie pojawi sie:
dziecko
(a wrecz dzieci) mamy do czynienia z abstrakcja typu "narzady", ktora mozna
(i warto) podkreslic w schemie chocby przez uzycie xs:grop.
> Co do pytania drugiego - jak zdefniuje w elemencie glownym, to chyba
> mi tylko zwaliduje element glowny ? Bo z tego co szukalem, to ten
Troche nie rozmiem, ale cos mi mowi, ze parles sie definiowac klucz tam
gdzie go uzywasz, a nie ma takiego wymogu.
> wykastrowany xpath, ktory mozna uzywac w xsd nie obsluguje descendant
A po co descendant (w tym przypadku)? Wartosci "slownikowe" sa ulokowane
precyzyjnie.
sz.
P.S. Olej szukanie w sieci. Poswiec troche czasu na analize "schemy schemy".
W niej napawde dobrze widac co, kiedy, dlaczego i jak ;>
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads