Jag antar att DTD:er oxå kan diskuteras här...
Jag håller på att skriva en DTD till min XML-fil.
Jag har ett element (Person), som är tomt men har lite attribut
<!ELEMENT Person EMPTY>
<!ATTLIST Person
sex (M|F) #REQUIRED
uppdaterad CDATA #REQUIRED
mailadress CDATA #IMPLIED>
attributet sex skulle jag vilja att man kan ha M, F eller mellanslag(för okänd).
Hur skriver jag ett mellanslag i min lista på godkända värden ??
attributet uppdaterad vill jag ha på formatet YYYYMMDD
kan man speca att det måste vara 8 tkn och att dom måste vara siffror ??
om jag har ett attribut som IMPLIED (ej nödvändigt)
ska då XML-taggen innehålla attributet fast inget värde eller ska attributet helt utelämnas ur XML-taggen om det man inte har något värde på (i detta fall mailadress)
jarvkloMedlem sedan juli 20013 378 inlägg Re: DTD syntax
attributet sex skulle jag vilja att man kan ha M, F eller mellanslag(för okänd).
Hur skriver jag ett mellanslag i min lista på godkända värden ??
OBS Har ej testat just detta, men funkar det med
sex (M|F|&x020;) #REQUIRED
(där 020 är hexadecimala värdet för mellanslag) ?
Kan du inte köra med
sex (M|F) #IMPLIED
istället? Du får ju "tomt" värde om #IMPLIED-attributet utelämnas (vilket inte är *exakt* vad du frågade efter, men som jag vet funkar ;) )...
attributet uppdaterad vill jag ha på formatet YYYYMMDD
kan man speca att det måste vara 8 tkn och att dom måste vara siffror ??
Nej - Inte i en DTD, men kanske i ett XML Schema?
om jag har ett attribut som IMPLIED (ej nödvändigt)
ska då XML-taggen innehålla attributet fast inget värde eller ska attributet helt utelämnas ur XML-taggen om det man inte har något värde på (i detta fall mailadress)
Du behöver inte ha med ett #IMPLIED-deklarerat attribut i taggen
Jfr deklarationen av <hr align="..."> i xhtml 1.0
<!ELEMENT hr EMPTY>
<!ATTLIST hr
...
align (left|center|right) #IMPLIED
...
>
Okej, tack för svaren :)
Lite till funderingar/undringar ;)
Om jag i min DTD har följande attribut som ser ut tex såhär:
<!ELEMENT namn EMPTY>
<!ATTLIST namn
text CDATA #REQUIRED>
kan xml-dokumentet till denna DTD se ut såhär?
<namn text="">
eller måste text innehålla minst ett tecken ??
jarvkloMedlem sedan juli 20013 378 inlägg I XML-specen (se http://www.xml.se/xml/REC-xml-19980210-sv.html#NT-AttValue ) definieras ett attributvärde som följer:
AttValue ::= '"' ([^<&"] | Reference )* '"' | "'" ([^<&'] | Reference)* "'"
Uttytt till någorlunda begriplig svenska betyder det att attributvärden består antingen av:
tecknet dubbelfnutt följt av antingen - ett tecken som inte är ett "<" eller ett "&" - eller - en referens - upprepat noll eller flera gånger och avslutat med en dubbelfnutt till
eller också samma harang med enkelfnuttar istället för dubbelfnuttar.
(referens visar sig vara en entitetsreferens på formen &någonting; )
När du deklarerar ett attribut som CDATA, gäller även regeln för hur CDATA får se ut. Och även där är det noll eller flera tecken som gäller... (se http://www.xml.se/xml/REC-xml-19980210-sv.html#sec-cdata-sect )
Svaret på din fråga är alltså:
Du bör lugnt skriva sådär - noll eller flera tecken verkar vara OK i attributvärden (sen är det ju förståss upp till XML-tolken om den hanterar det på det sättet också ;) ).