Avatar billede mads375 Juniormester
14. februar 2012 - 16:06 Der er 22 kommentarer og
1 løsning

XML til DTD oversættelse

Hejsa.

Jeg skal oversætte følgende XML til DTD:

http://cs.au.dk/ (...)

Hvordan kommer jeg igang med det?

Jeg har oprettet en tråd tidligere idag, man har valgt at oprette den igen for at få flere inputs. Gerne med nogle ord på.

Mvh Mads
Avatar billede arne_v Ekspert
14. februar 2012 - 16:34 #1
Linket blev messed up.
Avatar billede arne_v Ekspert
14. februar 2012 - 16:35 #2
Men er det ikke grundliggende bare at tage XML og saa skrive DTD manuelt?
Avatar billede mads375 Juniormester
14. februar 2012 - 16:58 #3
Hejsa.

Jeg prøver lige igen :-/

http://cs.au.dk/~mis/dWebTek/cloud.xsd

Jo det er bare at tage XML og skrive til DTD manuelt. Jeg er i tvivl om hvordan jeg kommer igang med det.

Fx bare med det her:

<element name="sellItems" type="w:sellItems"/>
        <complexType name="sellItems">
            <all>
                <element ref="w:shopKey"/>
                <element ref="w:itemID"/>
                <element ref="w:customerID"/>
                <element ref="w:saleAmount"/>
            </all>
        </complexType>

Mvh Mads
Avatar billede arne_v Ekspert
14. februar 2012 - 17:09 #4
Det der er XML men det er mere praecist et schema du skal omskrive til DTD.
Avatar billede arne_v Ekspert
14. februar 2012 - 17:11 #5
Og det er svaert at konvertere den vej.

Men noget a la:

<!ELEMENT sellItems (shopKey,itemID,customerID,saleAmount)>
Avatar billede mads375 Juniormester
14. februar 2012 - 17:20 #6
Jeg ved godt det er forkert, men er det noget ala det:

<!DOCTYPE SELLITEMS[
<!ELEMENT SELLITEMS(COMPLEXTYPE)>
<!ELEMENT COMPLEXTYPE(ALL)>
<!ELEMENT ALLDATA(SHOPKEY,ITEMID,CUSTOMERID,SALEAMOUNT)>
<!ELEMENT SHOPKEY (#PCDATA)>
<!ELEMENT ITEMID (#PCDATA)>
<!ELEMENT CUSTOMERID (#PCDATA)>
<!ELEMENT SALEAMOUNT (#PCDATA)>
]>
Avatar billede arne_v Ekspert
14. februar 2012 - 17:26 #7
De 4 sidste ser rigtig ud.

For de foerste tror jeg mere paa mit forslag i #5.
Avatar billede mads375 Juniormester
14. februar 2012 - 17:46 #8
ok cool. Så skal de tre første ikke med?
Avatar billede arne_v Ekspert
14. februar 2012 - 17:59 #9
<!ELEMENT sellItems (shopKey,itemID,customerID,saleAmount)>
<!ELEMENT SHOPKEY (#PCDATA)>
<!ELEMENT ITEMID (#PCDATA)>
<!ELEMENT CUSTOMERID (#PCDATA)>
<!ELEMENT SALEAMOUNT (#PCDATA)>

definerer en strukturL

<sellItems>
    <SHOPKEY>xxxx</SHOPKEY>
    ...
</sellItems>

hvilket vel er det du oensker.
Avatar billede mads375 Juniormester
14. februar 2012 - 18:08 #10
jo jo det er det. Jeg sad og kiggede på dette link:

http://csharpcomputing.com/XMLTutorial/Lesson8.htm

og så på første billede (For instance, consider the following XML file with an internal DTD: )

At de havde skrevet alle XML tags op i DTD også, altså før de definerede TITLE og AUTHOR.

Det var derfor jeg prøvede at definere dette også. Men hvis dette er svaret:

<!ELEMENT sellItems (shopKey,itemID,customerID,saleAmount)>
<!ELEMENT SHOPKEY (#PCDATA)>
<!ELEMENT ITEMID (#PCDATA)>
<!ELEMENT CUSTOMERID (#PCDATA)>
<!ELEMENT SALEAMOUNT (#PCDATA)>

så prøver jeg at gå videre med det :-) tak for hjælpen, og læg gerne et svar :-)
Avatar billede arne_v Ekspert
14. februar 2012 - 18:15 #11
Den guide er faktisk helt fin.

Jeg tror at det er forskellen paa intern og ekstern DTD du lige skal have styr paa.
Avatar billede arne_v Ekspert
14. februar 2012 - 18:16 #12
og et svar
Avatar billede mads375 Juniormester
14. februar 2012 - 18:38 #13
takker :-)
Avatar billede mads375 Juniormester
14. februar 2012 - 20:30 #14
Hej Arne.

Du får nok ikke mailen herfra, men jeg prøver lige at skrive alligevel.
Hvis jeg nu havde dette her:

<simpleType name="customerPass">
        <restriction base="w:simpleText">
            <minLength value="3"/>
            <maxLength value="20"/>
        </restriction>
    </simpleType>


Hvordan ville du skrive value?
Avatar billede arne_v Ekspert
14. februar 2012 - 20:38 #15
Du kan slet ikke udtrykke den slags restriktioner i DTD.

I DTD kan du angive at element X bestaar af noget text.

I Schema kan du angive at element X er en integer mellem 3 og 20.
Avatar billede mads375 Juniormester
14. februar 2012 - 20:46 #16
ok. Opgaven hedder den skal oversættes til DTD. Er det så bare:

hhmm hvordan ville du så skrive den?

Mvh Mads (Ps tak for du lige kiggede :-) )
Avatar billede mads375 Juniormester
14. februar 2012 - 20:52 #17
<ATTLIST customerPass>
    simpletext(3|20) #REQUIRED

??
Avatar billede arne_v Ekspert
14. februar 2012 - 21:09 #18
<!ATTLIST elementnavn attributnavn CDATA #REQUIRED>
Avatar billede arne_v Ekspert
14. februar 2012 - 21:10 #19
<!ATTLIST elementnavn attributnavn (3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20) #REQUIRED>

er fjollet
Avatar billede mads375 Juniormester
14. februar 2012 - 21:19 #20
Det vil sige i dette tilfælde:

<element name="customerPass" type="w:customerPass"/>
   
    <simpleType name="customerPass">
        <restriction base="w:simpleText">
            <minLength value="3"/>
            <maxLength value="20"/>
        </restriction>
    </simpleType>



<!ATTLIST customerPass simpleText(CDATA) #REQUIRED
Avatar billede arne_v Ekspert
14. februar 2012 - 21:27 #21
Nej.

Det er et element ikke en attribut.

Saa:

<!ELEMENT customerPass (#PCDATA)>
Avatar billede arne_v Ekspert
14. februar 2012 - 21:37 #22
Maaske kunne du faa noget ud af:

http://www.eksperten.dk/spm/956961
Avatar billede mads375 Juniormester
14. februar 2012 - 21:54 #23
ok fint mange tak igen :-)
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