🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

13 total messages Started by walec51 Thu, 14 May 2009 22:43
XML Schema - deklaracje rekurencyjne
#10130
Author: walec51
Date: Thu, 14 May 2009 22:43
62 lines
2668 bytes
Witam.

Zasłużmy że mój program akceptuje np takiego xml'a:

<Block>
	<Block>
		<PrintMessage/>
		<Block>
			<PrintMessage />
			<PrintMessage />
		</Blok>
	</Block>
	<Block>
		<PrintMessage />
		<PrintMessage />
	</Block>
</Block>

I teraz próbuje dla tego typu xml'ków ułożyć XML Schema:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">

	<group name="Statement">
		<choice>

			<element name="Block">
				<complexType>
					<sequence>
						<element ref="Statement" maxOccurs="unbounded" />
					</sequence>
				</complexType>
			</element>

			<element name="PrintMessage">

			</element>

		</choice>
	</group>

</schema>

Ale tu pojawia mi się błąd w schemie typu:

src-resolve.4.2: Error resolving component 'Statement'. It was
detected that 'Statement' is in
 namespace 'http://www.w3.org/2001/XMLSchema', but components from
this namespace are
 not referenceable from schema document 'file:///home/awalczak/
workspace/xmlstacks/src/
 info/adamwalczak/xmlstacks/res/lang.xsd'. If this is the incorrect
namespace, perhaps the
 prefix of 'Statement' needs to be changed. If this is the correct
namespace, then an
 appropriate 'import' tag should be added to 'file:///home/awalczak/
workspace/xmlstacks/src/
 info/adamwalczak/xmlstacks/res/lang.xsd'.

I tu że tak powiem treść tego błędu kompletnie do mnie nie przemawia :
(
Jakieś sugestie co mogę robić nie tak ?
Re: XML Schema - deklaracje rekurencyjne
#10131
Author: walec51
Date: Thu, 14 May 2009 22:46
2 lines
1329 bytes
PS. XML z pojedynczym tagiem <PrintMessage /> jest także akceptowalny
przez mój program.
Re: XML Schema - deklaracje rekurencyjne
#10132
Author: szomiz
Date: Fri, 15 May 2009 05:12
18 lines
1595 bytes
Użytkownik "walec51" <walec5@gmail.com> napisał w wiadomości 
news:92ccb06a-5b21-463b-936f-583e472452ba@x6g2000vbg.googlegroups.com...

> <group name="Statement">
...
> <element ref="Statement" maxOccurs="unbounded" />

Tak nie mozna. Mozna w ten sposob:

element/@ref <= /schema/element/@name
group/@ref <= /schema/group/@name

Co nie zmienia faktu, ze nie widze tutaj zastosowania dla group ;)

Hint 1: popatrz na problem "od dolu".
Hint 2: element/@type <= /schema/complexType/@name

sz.
Re: XML Schema - deklaracje rekurencyjne
#10133
Author: walec51
Date: Fri, 15 May 2009 09:11
43 lines
2044 bytes
Idąc za radą spróbowałem czegoś takiego:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">

	<complexType name="Statement">
		<choice>
			<element ref="Block" />
			<element ref="PrintMessage" />
		</choice>
	</complexType>

	<element name="Block">
		<complexType mixed="true">
			<sequence>
				<element type="Statement" maxOccurs="unbounded" />
			</sequence>
		</complexType>
	</element>

	<element name="PrintMessage" />

</schema>

Jednak nadal otrzymuje błąd tego samego typu and tym razem dla
identyfikatora Block w <element ref="Block" />.

Zdaje się że w xsd brakuje czegoś typu z C++

class A;

class B {

	class A;

	...
};

class A {

	...

};
Re: XML Schema - deklaracje rekurencyjne
#10134
Author: szomiz
Date: Fri, 15 May 2009 09:30
43 lines
2666 bytes
Użytkownik "walec51" <walec5@gmail.com> napisał w wiadomości 
news:fd7e2adb-15c2-49a1-a2b7-5fd2f31cdb66@t10g2000vbg.googlegroups.com...

> Idąc za radą spróbowałem czegoś takiego:

> <complexType name="Statement">
> <choice>
> <element ref="Block" />
> <element ref="PrintMessage" />
> </choice>
> </complexType>

Prawie dobrze ;>

<element name="Block" type="Statement"/>

<complexType name="Statement">
    <choice>
        <element name="Block" type="Statement"/>
        <element name="PrintMessage" type="..."/>

Uwaga natury ogolnej:

Opieranie schemy o element'y definiowane na najwyzszym poziomie i pozniejsze 
odwolywanie sie do nich przez ref'y jest proszeniem sie o klopoty, poniewaz, 
jezeli nie dopiszesz do tego w dokumentacji wymagan nieformalnych (ktorych 
im mniej tym lepiej), to ktos przysle ci dokument _zaczynajacy_sie_ od 
innego elementu niz to sobie zalozyles i bedziesz w d...

W Twoim przypadku nie ma to raczej znaczenia, ale Pewne Ministerstwo walnelo 
w schemach taki numerasek i szukam kogos kto nie bedzie sie bal porobic se 
jaj z Waznego Urzedu ;>

> Zdaje się że w xsd brakuje czegoś typu z C++

Nie brakuje (co pokazalem wyzej).

Co najwyzej przeszkadzaja nawyki wynikajace ze zindoktrynowania przez 
Jedynie Sluszne Relacyjne Modele Baz Danych, ktore w przypadku dosc 
oczywistych zastosowan mozliwosci oferowanych przez xml i standardy z nim 
zwiazane stawiaja pod sciana ;)

sz. 
Re: XML Schema - deklaracje rekurencyjne
#10135
Author: szomiz
Date: Fri, 15 May 2009 09:31
16 lines
1746 bytes
Użytkownik "szomiz" <szomiz@kocha.dostawac.reklamy.przez.net> napisał w 
wiadomości news:gujcqt$fk5$1@atlantis.news.neostrada.pl...

> <element name="Block" type="Statement"/>
>
> <complexType name="Statement">
>    <choice>
>        <element name="Block" type="Statement"/>
>        <element name="PrintMessage" type="..."/>

Ups, bylo juz kiedys o tym...

       <element name="Block" type="Statement" minOccurs="0"/>
       <element name="PrintMessage" type="..."  minOccurs="0"/>

sz. 
Re: XML Schema - deklaracje rekurencyjne
#10142
Author: toudidel
Date: Fri, 15 May 2009 13:47
11 lines
1345 bytes
Użytkownik "walec51" <walec5@gmail.com> napisał w wiadomości 
news:92ccb06a-5b21-463b-936f-583e472452ba@x6g2000vbg.googlegroups.com...
>Witam.
>Zasłużmy że mój program akceptuje np takiego xml'a:
>(...)

Polecam w tej materii artykuł: 
http://xmlguru.net/artykuly/schema/145-schema-element-w-nadmiarze-kiedy-warto.html
-- 
td
Re: XML Schema - deklaracje rekurencyjne
#10136
Author: walec51
Date: Fri, 15 May 2009 18:09
34 lines
2662 bytes
Dzięki za szybką odpowiedź!

Jednak po zaaplikowaniu tych zmian nadal mam podobny problem.

Teraz mój xsd wygląda tak:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema">

	<element name="Block" type="Statement" />

	<complexType name="Statement">
		<choice>
			<element name="Block" type="Statement" minOccurs="0" />
			<element name="PrintMessage" minOccurs="0" />
		</choice>
	</complexType>

</schema>

I otrzymuje wyjątek dla <element name="Block" type="Statement" /> że

src-resolve.4.2: Error resolving component 'Statement'. It was
detected that 'Statement' is in namespace 'http://www.w3.org/2001/
XMLSchema', but components from this namespace are not referenceable
from schema document 'file:/home/awalczak/workspace/xmlstacks/bin/info/
adamwalczak/xmlstacks/res/lang.xsd'. If this is the incorrect
namespace, perhaps the prefix of 'Statement' needs to be changed. If
this is the correct namespace, then an appropriate 'import' tag should
be added to 'file:/home/awalczak/workspace/xmlstacks/bin/info/
adamwalczak/xmlstacks/res/lang.xsd'.

Moje Sun'owa implementacja walidatora jest skopana ?
Czy znowu coś robię nie tak?
Re: XML Schema - deklaracje rekurencyjne
#10137
Author: szomiz
Date: Fri, 15 May 2009 18:41
36 lines
2947 bytes
Użytkownik "walec51" <walec5@gmail.com> napisał w wiadomości 
news:6d8c523f-0e8a-440c-9848-40505f2f9509@e20g2000vbc.googlegroups.com...

> I otrzymuje wyjątek dla <element name="Block" type="Statement" /> że
> src-resolve.4.2: Error resolving component 'Statement'. It was
> detected that 'Statement' is in namespace 'http://www.w3.org/2001/
> XMLSchema', but components from this namespace are not referenceable
[ciach]
> Moje Sun'owa implementacja walidatora jest skopana ?
> Czy znowu coś robię nie tak?

Nie. To raczej _moja_mania_ zapodawania uproszczonych/schematycznych 
rozwiazan oraz _Twoja_konwencja_ definiowania schemy bez prefiksowania 
schemowych elementow.

To sie moze wydac popieprzone (mimo, ze ma glebszy sens, na ktory ani czas, 
ani miejsce), ale _reguly_ z xml-schema /dzialaja/ *inaczej* przy:

1. <schema xmlns="http://www.w3.org/2001/XMLSchema">...</schema>
2. <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">...</xsd:schema>
3. <xsd:schema targetNamespace="jakies:uri" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">...</xsd:schema>
4. <xsd:schema targetNamespace="jakies:uri" xmlns="jakies:uri" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">...</xsd:schema>

A jak dodac do tych opcji elementFormDefault, to mozna (bez znajomosci 
niuansow) oszalec. A na pewno sie zniechecic.

Podsumowujac: Twoj dokument ma okreslona przestrzen nazw, czy jest z serii 
"noNamespace"?

Bo glownie od tego zalezy jak napisac scheme, ktorej potrzebujesz i/lub jak 
wziac poprawki na _ewentualne_ problemy z implementacja standardu przez 
konkretna bilblioteke.

sz. 
Re: XML Schema - deklaracje rekurencyjne
#10138
Author: walec51
Date: Fri, 15 May 2009 19:47
6 lines
1710 bytes
> Podsumowujac: Twoj dokument ma okreslona przestrzen nazw, czy jest z serii
> "noNamespace"?

Z serii noNamespace.

Heh a z tutoriala w3c zapowiadało się że to będzie takie proste :)
Re: XML Schema - deklaracje rekurencyjne
#10139
Author: szomiz
Date: Fri, 15 May 2009 20:23
34 lines
2679 bytes
Użytkownik "walec51" <walec5@gmail.com> napisał w wiadomości 
news:74d78640-2ffd-41bd-9f3a-300682426b10@b1g2000vbc.googlegroups.com...

> Z serii noNamespace.

No to sprobuj:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Block" type="blockDef"/>
    <xs:complexType name="blockDef">
        <xs:choice minOccurs="0" maxOccurs="unbonded">
            <xs:element name="Statement" type="blockDef"/>
            <xs:element name="PrintMessage"/>
        </xs:choice>
    </xs:complexType>
</xs:schema>

I _jezeli_ zadziala (a powino, bo wlasnie mam obok taka /noNamespace/ 
konstrukcje wzbogacona o xs:unique i w msxml'u hula, ze stach) - w ramach 
ekspiacji - doczytaj w specyfikacji (albo na tym czacie: bylo) i napisz na 
forum milosnikow goldenow, jak i dlaczego bedzie dzialac PrintMessage ;>

> Heh a z tutoriala w3c zapowiadało się że to będzie takie proste :)

Bo to wszystko _na_prawde_ jest proste. Pod warunkiem ze sie zaczyna od 
przejrzenia specyfikacji, a nie tutoriala.

Xml schema _podobnie_ jak XSLT ma mniej zdefiniowanych elementow niz dowolna 
wersja HTML'a.

Z tym, ze w przypadku schemy zamotanie zagniezdzen i zaleznosci jest do 
HTML'a porownywalne.

sz. 
Re: XML Schema - deklaracje rekurencyjne
#10140
Author: szomiz
Date: Fri, 15 May 2009 20:26
34 lines
2667 bytes
Użytkownik "walec51" <walec5@gmail.com> napisał w wiadomości
news:74d78640-2ffd-41bd-9f3a-300682426b10@b1g2000vbc.googlegroups.com...

> Z serii noNamespace.

No to sprobuj:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Block" type="blockDef"/>
    <xs:complexType name="blockDef">
        <xs:choice minOccurs="0" maxOccurs="unbonded">
            <xs:element name="Block" type="blockDef"/>
            <xs:element name="PrintMessage"/>
        </xs:choice>
    </xs:complexType>
</xs:schema>

I _jezeli_ zadziala (a powino, bo wlasnie mam obok taka /noNamespace/
konstrukcje wzbogacona o xs:unique i w msxml'u hula, ze stach) - w ramach
ekspiacji - doczytaj w specyfikacji (albo na tym czacie: bylo) i napisz na
forum milosnikow goldenow, jak i dlaczego bedzie dzialac PrintMessage ;>

> Heh a z tutoriala w3c zapowiadało się że to będzie takie proste :)

Bo to wszystko _na_prawde_ jest proste. Pod warunkiem ze sie zaczyna od
przejrzenia specyfikacji, a nie tutoriala.

Xml schema _podobnie_ jak XSLT ma mniej zdefiniowanych elementow niz dowolna
wersja HTML'a.

Z tym, ze w przypadku schemy zamotanie zagniezdzen i zaleznosci jest do
HTML'a porownywalne.

sz. 
Re: XML Schema - deklaracje rekurencyjne
#10141
Author: walec51
Date: Mon, 18 May 2009 17:31
9 lines
2180 bytes
Bardzo dziękuje za pomoc. Wskazówka z przestrzeniami nazw załatwiła
sprawę.
A potrzebne mi to było do opisu mojego XML'owego języka skryptowego do
przetwarzania plików XML.
Więcej informacji o składni oraz interpreterze jest dostępne na:
http://www.adamwalczak.info/homepage/xmlstacks/
Sam język, który stworzyłem szału nie robi; on po prostu jest (na
zaliczanie :) ).
Choć sposób w jaki zaprojektowałem interpreter uważam za całkiem udany.
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