---
title: "DTD syntax"
type: "forum-thread"
url: "https://www.webforum.nu/amne/xml/47489-dtd-syntax"
topic: "XML"
topic_url: "https://www.webforum.nu/amne/xml"
author: "hogdefoo"
published: "2002-07-08T13:50:09.000Z"
updated: "2002-07-09T20:43:27.000Z"
replies: 3
views: 493
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/xml/47489-dtd-syntax"
---

# DTD syntax

## #1 — hogdefoo, 2002-07-08T13:50Z

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)

Permalänk: https://www.webforum.nu/p/47489

## #2 — jarvklo, 2002-07-08T16:04Z

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
... 
   >
```

Permalänk: https://www.webforum.nu/p/715210

## #3 — hogdefoo, 2002-07-09T11:55Z

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 ??

Permalänk: https://www.webforum.nu/p/715687

## #4 — jarvklo, 2002-07-09T20:43Z

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 "&amp;" -  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 &amp;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å ;) ).

Permalänk: https://www.webforum.nu/p/715987

---

Tråden på webben: https://www.webforum.nu/amne/xml/47489-dtd-syntax
