/ Forside / Teknologi / Udvikling / HTML / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
HTML
#NavnPoint
molokyle 11184
Klaudi 5506
bentjuul 3377
severino 2040
smorch 1950
strarup 1525
natmaden 1396
scootergr.. 1320
e.c 1150
10  miritdk 1110
XML Schema - indhold i element
Fra : Christian Bohr-Halli~


Dato : 11-09-06 22:18

Selvom den rette gruppe vel strengt taget er d.e.tekst, tror jeg,
der er større chance for at få et svar her.

Jeg sidder lige og roder lidt med XML-Schema via en (IMO ikke videre
god) bog, jeg tilfædigt havde liggende (Proff. XML fra Wrox).

Mit første Schema er endt med at blive flg:

-------------------
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
.....
<xs:element name="ItemS">
<xs:complexType>
<xs:sequence>
<xs:element name="Item" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="itemId" type="xs:ID"/>
<xs:attribute name="standardPrice" type="xs:double"/>
</xs:complexType>
</xs:element>
......
-----------------------------

Vi har så flg. XML....
<ItemS>
   <Item itemId="a1" standardPrice="18">Pepsi Cola</Item>
</ItemS>

Den validerer kun, hvis Item-elementet er tomt, altså uden "Pepsi
Cola". Jeg får fejlen "The content of complex type definition
'{anonymous}' is 'empty'. This forbids any content for element
<Item>." i XMLspy.
....Det er sikkert en åbenlys og basal fejl, men jeg kan ikke lige i
mine introvildelser gennemskue den, så der tillades alm. tekst i
elementet. Hvad er problemet, og hvad skal jeg læse på?


Kan I i øvrigt anbefale en god bog omkring Schemas, XPath, XSLT....?

--
What is life, except excuse for death,
or death, but an escape from life. -Ukendt

http://www.amnesty.dk/stoptortur/protest/

 
 
Jens Gyldenkærne Cla~ (12-09-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-09-06 08:01

Christian Bohr-Halling skrev:

> Vi har så flg. XML....
> <ItemS>
> <Item itemId="a1" standardPrice="18">Pepsi Cola</Item>
> </ItemS>
>
> Den validerer kun, hvis Item-elementet er tomt, altså uden
> "Pepsi Cola". Jeg får fejlen "The content of complex type
> definition '{anonymous}' is 'empty'. This forbids any content
> for element <Item>." i XMLspy.

Jeg tror du skal putte mixed="true" på som attribut til din
complextype:

    <xs:complexType mixed="true">
<xs:attribute name="itemId" type="xs:ID"/>
<xs:attribute name="standardPrice" type="xs:double"/>
</xs:complexType>


Det skulle tillade indhold i elementet.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Christian Bohr-Halli~ (12-09-2006)
Kommentar
Fra : Christian Bohr-Halli~


Dato : 12-09-06 19:41

Jens Gyldenkærne Clausen <jens@gyros.invalid> posting:

>> Vi har så flg. XML....
>> <ItemS>
>> <Item itemId="a1" standardPrice="18">Pepsi Cola</Item>
>> </ItemS>
>>
>> Den validerer kun, hvis Item-elementet er tomt, altså uden
>> "Pepsi Cola". Jeg får fejlen "The content of complex type
>> definition '{anonymous}' is 'empty'. This forbids any content
>> for element <Item>." i XMLspy.
>
>Jeg tror du skal putte mixed="true" på som attribut til din
>complextype:

Ja, det virker, hm, selvom jeg ikke lige synes, det er helt logisk
hvorfor. Mixed indhold på et element, der ikke må indeholde andre
elementer virker lidt modstridende, imo.

--
What is life, except excuse for death,
or death, but an escape from life. -Ukendt

http://www.amnesty.dk/stoptortur/protest/

Jens Gyldenkærne Cla~ (12-09-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 12-09-06 21:07

Christian Bohr-Halling skrev:

> Ja, det virker, hm, selvom jeg ikke lige synes, det er helt
> logisk hvorfor. Mixed indhold på et element, der ikke må
> indeholde andre elementer virker lidt modstridende, imo.

Så vidt jeg kan se betyder mixed="true" blot at der måde må være
attributter og indhold. Indholdet kan være andre elementer eller
bare en tekst-knude (som i dit tilfælde).
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Christian Bohr-Halli~ (12-09-2006)
Kommentar
Fra : Christian Bohr-Halli~


Dato : 12-09-06 22:13

Jens Gyldenkærne Clausen <jens@gyros.invalid> posting:

>> Ja, det virker, hm, selvom jeg ikke lige synes, det er helt
>> logisk hvorfor. Mixed indhold på et element, der ikke må
>> indeholde andre elementer virker lidt modstridende, imo.
>
>Så vidt jeg kan se betyder mixed="true" blot at der måde må være
>attributter og indhold.

Nare, jeg forstår det nu som, der må være tekstindhold flettet ind
mellem elementer, altså fx "Klokken <klokken>13:33</klokken> modtog
vi fra <fornavn>Hans</fornavn> <efterhavn>Hansen</efternavn>.."...
og altså ikke, *om* der som sådan må være indhold eller ej.

Du kan jo fint definere elementer og attributter uden mixed="true",
og det samme kan du med simpelt indhold, har jeg så fundet ud af
(se herunder).


>Indholdet kan være andre elementer eller bare en tekst-knude (som i dit tilfælde).

Det er (vist nok) gået op for mig, at complexType er
"indholdsempty" per standard for elementet, det defineres for og
selv simpelt indhold i det (som tekst) derfor helt eksplicit skal
sættes vha. simpleContent. Det bliver noget i stil med dette her, om
end jeg godt nok synes, det her kræver *meget* skriveri for at opnå
"ingenting".

<xs:element name="Item" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:boolean">
<xs:attribute name="itemId" type="xs:ID"
use="required"/>
<xs:attribute name="standardPrice" type="xs:double"
use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
Se evt.
http://www.techquila.com/topicmaps/xmlschema/x1h7h03plh-3d5.html

Det er sguda bøvlet!


Med denne skulle fx
   <Item itemId="ID1" standardPrice="2.0">true</item>
være valid, mens flg. ikke er det...
   <Item itemId="ID1" standardPrice="2.0">printer</item>

--
What is life, except excuse for death,
or death, but an escape from life. -Ukendt

http://www.amnesty.dk/stoptortur/protest/

Christian Bohr-Halli~ (12-09-2006)
Kommentar
Fra : Christian Bohr-Halli~


Dato : 12-09-06 22:49

Christian Bohr-Halling <nospam@cbh.softwolves.dk> posting:

>Nare, jeg forstår det nu som, der må være tekstindhold flettet ind
>mellem elementer, altså fx "Klokken <klokken>13:33</klokken> modtog
>vi fra <fornavn>Hans</fornavn> <efterhavn>Hansen</efternavn>.."...
>og altså ikke, *om* der som sådan må være indhold eller ej.

Dårligt eksempel.

Mixed for Noget-elementet gør dette tilladeligt, som jeg forstår
det:
<Noget>
Klokken <klokken>13:33</klokken> modtog vi fra
<fornavn>Hans</fornavn> <efterhavn>Hansen</efternavn>..
</Noget>

....men angiver ikke, om Noget helt generelt er et tomt element eller
ej, som jeg forstår det.

--
What is life, except excuse for death,
or death, but an escape from life. -Ukendt

http://www.amnesty.dk/stoptortur/protest/

Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408527
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste