Avatar billede mik789 Nybegynder
27. marts 2004 - 14:16 Der er 18 kommentarer og
1 løsning

DTD - rækkefølge af elementer er ligegyldig

Er lige startet på XML og er så lige kørt fast i et sikkert meget enkelt problem: hvordan erklærer man i sin DTD at et element skal indeholde en række child elementer, men at deres rækkefølge er ligegyldig?

//mik
Avatar billede nute Nybegynder
27. marts 2004 - 14:58 #1
<!ELEMENT dinNode (enNode | enAndenNode | enTredjeNode )*>

/nute
Avatar billede nute Nybegynder
27. marts 2004 - 14:58 #2
hvis du ikke allerede har kigget på denne, så er det et udmærket udgangspunkt for at lære the basics:

http://www.w3schools.com/dtd/default.asp

/nute
Avatar billede mik789 Nybegynder
27. marts 2004 - 15:03 #3
nute>har lige kigget på den, men jeg synes det er lidt misvisende: "The example above declares that the "note" element can contain zero or more occurrences of parsed character, "to", "from", "header", or "message" elements." Jeg vil kun have one occurence af hvert element.
Avatar billede mik789 Nybegynder
27. marts 2004 - 15:07 #4
F.eks. hvis elementet doc_info skal indeholde elementerne doc_type, doc_title, doc_date og doc_author, men kun én forekomst af hvert element, dog gerne i tilfældig rækkefølge.
Avatar billede olebole Juniormester
27. marts 2004 - 15:19 #5
<ole>

Prøv evt. denne URL - klik grundigt i menuen til venstre:
  http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmmscxmlreference.asp

Overvej evt. om ikke schemas var en bedre idé til at beskrive den slags med  ;o)

/mvh
</bole>
Avatar billede mik789 Nybegynder
27. marts 2004 - 15:19 #6
for hvis jeg skriver:

<!ELEMENT doc_info (doc_type? | doc_title? | doc_date? | doc_author?)>

betyder det vel at doc_info skal indeholde ét af disse child elementer, eller?
Avatar billede mik789 Nybegynder
27. marts 2004 - 15:23 #7
olebole> jo, jeg har godt nok læst at DTD er en forældet metode og at man bør foretrække schemas, men jeg ville godt igennem det med DTD for at finde ud af hvordan det fungerer. Mit eksempel er vel egentlig en oplagt mulighed, og burde være simpelt. Det svarer til at elementet head kan indeholde title, link, script og meta men at rækkefølgen er underordnet (hvad den vist ikke helt er alligevel...)
Avatar billede mik789 Nybegynder
27. marts 2004 - 15:45 #8
OK,fandt denne: http://www.w3.org/TR/1999/REC-html401-19991224/intro/sgmltut.html#h-3.3.3.1

der siger:

A | B
    Either A or B must occur, but not both.
A , B
    Both A and B must occur, in that order.
A & B
    Both A and B must occur, in any order.

Så her nævnes altså det jeg var ude efter (A & B) - det er til gengæld ikke nævnt på w3school og heller ikke i den XML guide jeg sidder med (Elizabeth Castro: "XML til WWW"), så gad vist om det dur?
Avatar billede olebole Juniormester
27. marts 2004 - 16:39 #9
Jeg kan desværre ikke hjælpe så meget med DTD, da jeg ikke har brugt dem til så meget.
Jeg foretrækker selv schemas - bl.a. fordi de giver mig en dejlig, lettilgængelig måde at validere de ændringer i data, brugeren evt. kunne tænkes at ville foretage.

Jeg har bl.a. lavet nogle datagrids og flexigrids, som de kendes fra VB og ASP.NET, men som kan bruges i alle server-miljøer. Her kan jeg downe hele DB-tabeller - eller dele deraf - og præsentere dem for brugeren, der kan rette og rename så tosset, hun vil. Alle data-ændringer bliver checket og godkendt/afvist på baggrund af et schema-kald i DOM eller X-Paths. DB'en kan så enten opdateres løbende via XMLhttp-requests - eller man venter til sidst og opdaterer DB'en med et 'Save' kald.
... 'PHP.NET'  ;oD
Avatar billede nute Nybegynder
27. marts 2004 - 17:16 #10
må indrømme at dtd'er ikke er min sterke side. er, på samme måde som olebole, mere til schemas. Mit bud var mere et hint i, forhåbentlig, rigtig retning. jeg synes dtd'er er uoverskuelige og bryder med hele bagtanken med XML, at det skal være let forståeligt og "menneskeligt lesbart" - noget man ikke kan sige dtd'er er.
Avatar billede mik789 Nybegynder
27. marts 2004 - 17:36 #11
OK, I har overbevist mig ;-) Men jeg fik det faktisk til at virke hvis bare jeg accepterede at rækkefølgen IKKE er ligegyldig.

Køre lige denne her DTD lektion færdig og går så i gang med schemas...
smid et svar d'Herrer
Avatar billede mik789 Nybegynder
27. marts 2004 - 17:38 #12
nute> du har ret i at det nemt bliver uoverskueligt. endte op med denne linje:

<!ELEMENT item ((book|(piece,(book|journal))|review),(pub_type|pub_place|pub_house|pub_year|pub_info|theme|vol|issue|pages|editor|series|series_editor)*)>

men det virker faktisk og også W3Schhols egen lille validator åd den (og jeg testede at den fangede fejl hvis de var der)
Avatar billede mik789 Nybegynder
27. marts 2004 - 17:40 #13
hov, irriterende med at Eksp. ikke længere bryder linjer der er for lange:

<!ELEMENT item ((book |(piece, (book | journal)) | review), (pub_type | pub_place | pub_house | pub_year | pub_info | theme | vol | issue | pages | editor | series | series_editor)*)>
Avatar billede nute Nybegynder
27. marts 2004 - 17:47 #14
fino :-)
Avatar billede mik789 Nybegynder
29. marts 2004 - 22:31 #15
nute> skal vi ikke bare gå ud fra at olebole tager det stille og roligt med points siden han ikke har svaret (ellers får han bare flere næste gang han hjælper mig ;-)
//mik
Avatar billede olebole Juniormester
29. marts 2004 - 23:33 #16
Helt i orden med mig ... slapper jeg mere af, skider jeg i stolen  :)
Avatar billede olebole Juniormester
29. marts 2004 - 23:33 #17
OLE FOR POKKER ...!!! Det skrev du da ikke ...!??!!?!!!  :D
Avatar billede mik789 Nybegynder
29. marts 2004 - 23:49 #18
vi har det sort på hvidt!
Avatar billede nute Nybegynder
30. marts 2004 - 09:59 #19
olebole >> hmm ... ubehagelig tanke ;o]

mik789 >> tak for points

/nute
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester