Avatar billede madseksperten Nybegynder
17. marts 2014 - 12:45 Der er 16 kommentarer og
1 løsning

XML namespaces

Hejsa

Jeg sidder og læser om XML namesspaces, og ser nogle tutorials. Jeg vil gerne prøve at lave mit eksempel, men er lidt i tvivl om hvordan jeg skal gribe det an. Er der en som har en ide til en begynder opgave jeg kunne lave i eclipse?

Mvh Mads
Avatar billede arne_v Ekspert
17. marts 2014 - 15:08 #1
Lav:
- XML format for bog kartotek
- XML format for musik kartotek
- XML format for kombineret bog og musik kartotek
Avatar billede madseksperten Nybegynder
17. marts 2014 - 15:37 #2
Tak Arne, god ide.. Jeg har lavet mig 2 xml dokumenter nu. Så det vil jeg hvis jeg fx skal bruge JDOM til at udskrive dem med, så skal jeg lave namespace til de 2 xml dokumenter, ikke?

<?xml version="1.0" encoding="UTF-8"?>

<catalog>
    <cd>
        <Band>Guns N Roses</Band>
        <title>Use Your Illusion 2</title>
        <genre>Hard Rock</genre>
        <publish_date>1993-01-02</publish_date>
        <price>15</price>
        <description>A cool Rock cd with a lot of good numbers</description>
    </cd>
    <cd>
        <Band>Stevie Ray Vaughan</Band>
        <title>The Sky Is Crying</title>
        <genre>Blues</genre>
        <publish_date>1979-03-04</publish_date>
        <price>11</price>
        <description>A legend with his guitar</description>
    </cd>
</catalog>

<?xml version="1.0" encoding="UTF-8"?>

<catalog>
    <book id="book_1">
        <author>Dave Winer</author>
        <title>Learn XML</title>
        <genre>IT Science</genre>
        <publish_date>1999-03-03</publish_date>
        <price>30</price>
        <description>A insight in the XML world</description>
    </book>
    <book id="book_2">
        <author>Arne Ekspert</author>
        <title>Java Programming</title>
        <genre>IT Science</genre>
        <publish_date>2014-04-17</publish_date>
        <price>75</price>
        <description>Advanced Java Programming insight</description>
    </book>
</catalog>
Avatar billede arne_v Ekspert
17. marts 2014 - 15:51 #3
Du kan godt bare tilfoeje namespace til XML'en.

Men jeg mener at det giver mest mening med namespaces hvis du definerer schemas for formaterne.
Avatar billede madseksperten Nybegynder
17. marts 2014 - 15:56 #4
Ok, jeg prøver lige at kigge på noget XML Schema nu
Avatar billede madseksperten Nybegynder
18. marts 2014 - 14:53 #5
Hey Arne.

Jeg har prøvet at lave et schema her for starten af books. Ser det rigtig ud, eller? Jeg er lidt i tvivl om hvornår man skal bruge attributes. Sådan som jeg forstår det så er attributes kun brugt på simpletypes?

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="catalog">
    <xs:complexType>
        <sequence>
            <xs:element name="author" type="xs:string"/>
            <xs:element name="title" type="xs:string"/>
            <xs:element name="genre" type="string"/>
            <xs:element name="publish_date" type="xs:date"/>
            <xs:element name="price" type="xs:decimal"/>
            <xs:element name="description" type="xs:string"/>
        </sequence>
    </xs:complexType>
</schema>
Avatar billede arne_v Ekspert
18. marts 2014 - 14:59 #6
Du kan godt have attributter paa complex types.
Avatar billede arne_v Ekspert
18. marts 2014 - 14:59 #7
Bare tilfoej dem efter sequence.
Avatar billede arne_v Ekspert
18. marts 2014 - 15:00 #8
Men jeg gaetter paa at din complex type skal vaere book og at catalog skal bestaa af 0..mange book's.
Avatar billede madseksperten Nybegynder
18. marts 2014 - 15:16 #9
ok. Hvad skulle man fx bruge af attributer på dette xml?

<catalog>
    <cd>
        <Band>Guns N Roses</Band>
        <title>Use Your Illusion 2</title>
        <genre>Hard Rock</genre>
        <publish_date>1993-01-02</publish_date>
        <price>15</price>
        <description>A cool Rock cd with a lot of good numbers</description>
    </cd>
    <cd>
        <Band>Stevie Ray Vaughan</Band>
        <title>The Sky Is Crying</title>
        <genre>Blues</genre>
        <publish_date>1979-03-04</publish_date>
        <price>11</price>
        <description>A legend with his guitar</description>
    </cd>
</catalog>
Avatar billede arne_v Ekspert
18. marts 2014 - 15:27 #10
Attributter bruges typisk til sekundaer information.

Kun du ved jo hvad du har brug for.

Men et eksempel:

<catalog>
    <cd status="Legal copy" discs="1">
        <Band>Guns N Roses</Band>
        <title>Use Your Illusion 2</title>
        <genre>Hard Rock</genre>
        <publish_date>1993-01-02</publish_date>
        <price>15</price>
        <description>A cool Rock cd with a lot of good numbers</description>
    </cd>
    <cd status="Illegal copy" discs="2">
        <Band>Stevie Ray Vaughan</Band>
        <title>The Sky Is Crying</title>
        <genre>Blues</genre>
        <publish_date>1979-03-04</publish_date>
        <price>11</price>
        <description>A legend with his guitar</description>
    </cd>
</catalog>
Avatar billede madseksperten Nybegynder
18. marts 2014 - 15:34 #11
OK, så det er simpelthen en vurderingssag ift hvad man har brug for. Så i dette tilfælde er :
<cd status="Legal copy" discs="1">Jeg trot det der forvirrer mig lidt er at attributer også ser sådan ud:

http://www.w3schools.com/schema/schema_simple_attributes.asp

Der bruges fx:

<xs:attribute name="lang" type="xs:string" default="EN"/>
Hvordan kun man bruge denne syntax ift det jeg har lavet fx?
Avatar billede arne_v Ekspert
18. marts 2014 - 15:59 #12
Det der er hvordan an attribut defineres i schema.
Avatar billede arne_v Ekspert
18. marts 2014 - 16:01 #13
<sequence>
            <xs:element name="author" type="xs:string"/>
            <xs:element name="title" type="xs:string"/>
            <xs:element name="genre" type="string"/>
            <xs:element name="publish_date" type="xs:date"/>
            <xs:element name="price" type="xs:decimal"/>
            <xs:element name="description" type="xs:string"/>
        </sequence>
        <xs:attribute name="discs" type="xs:postitiveInteger"/>
Avatar billede madseksperten Nybegynder
18. marts 2014 - 20:14 #14
Sådan Arne, nu tror jeg er kommet frem til noget godt. Ser det ikke ok ud? og smid et svar

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
          xmlns:xs="http://minegenhjemmeside.dk"
          targetNamespace="http://minegenhjemmeside.dk">
<xs:element name="catalog">
    <xs:complextype>
        <xs:sequence>
            <xs:element name="book">
                <xs:complextype>
                    <xs:sequence>
                        <xs:name="author" type="xs:string" />
                        <xs:name="title" type="xs:string" />
                        <xs:name="genre" type="xs:string">
                        <xs:name="publish_date" type="xs:date" />
                        <xs:name="price" type="xs:decimal" />
                        <xs:name="description" type="xs:string" />
                    </xs:sequence>
                    <xs:attribute name="id" type="xs:ID" use="required" />
                </xs:complextype>
        </xs:sequence>
    </xs:complextype>
</xs:element>
Avatar billede madseksperten Nybegynder
18. marts 2014 - 22:45 #15
Nej jeg mangler selvfølgelig at lave et kombineret format for dem. Den skal jeg lige se om jeg kan finde et sted at lære om. Men smid et svar alligevel.
Avatar billede arne_v Ekspert
19. marts 2014 - 00:58 #16
Jeg ville nok definere typer of referere til dem ved navn fremfor at lave det hele som nestede elementer. Men det er der naturligvis en vis potion smag og behag i.

Jeg kan ikke lige se om skemaet er korrekt. Men du kan jo proeve at validere noget XML mod det og se om du faar fejl.

:-)
Avatar billede arne_v Ekspert
19. marts 2014 - 00:58 #17
svar
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