🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

5 total messages Started by szimano Thu, 19 Feb 2009 08:58
Klucz XSD dla obiektu parent-child
#10081
Author: szimano
Date: Thu, 19 Feb 2009 08:58
60 lines
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
#10082
Author: szomiz
Date: Fri, 20 Feb 2009 08:58
34 lines
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
#10085
Author: szomiz
Date: Fri, 20 Feb 2009 09:12
13 lines
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
#10083
Author: szimano
Date: Fri, 20 Feb 2009 09:37
18 lines
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
#10084
Author: szomiz
Date: Fri, 20 Feb 2009 11:25
39 lines
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