[ SuperC @ 10.12.2007. 00:14 ] @
Kako uz pomoc XML i naravno DTD gdje je najmanje 10 razlicitih elemenata, najmanje stablo sa tri dubine/nivoa i najmanje 5 razlicitih atributa

uraditi sljedece, tj napisati kod kao PixelBoard stranica gdje ce svaki korisnik moci vlastite slike na zeljenu poziciju ubaciti, slike se moraju moci skalirati (1x1, 2x1, 1x2, 2x2) i da je tu i PixelItem (Owner, Name, id, Desc, Link, img-path, x-from, x-to, y-from, y-to)


[ SuperC @ 11.12.2007. 21:20 ] @
I evo XML sam uspio rijesiti:

Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE main SYSTEM "XMLAbgabe.dtd">
<abgabe>
<projekt>
    <projektbezeichnung>Keine Dokumentation keiner 

Webapplikation</projektbezeichnung>
    <benutzer>
        <Bilder>
   <skale>1x1</skale>
   <skale>2x1</skale>
   <skale>1x2</skale>
   <skale>2x2</skale>
</Bilder>
    </benutzer>
    <pixelitem>
        <owner>vlasnik</owner>
        <name>proba</name>
        <id>0.1</id>
        <Desc>slika</Desc>
<link>http://nowhere.com</link>
<img-path>http://imageshack.us</img-path>
<hScale>34</hScale>
   <hScaleto>4</hScaleto>
<vScale>34</vScale>
   <vScaleto>4</vScaleto>
    </pixelitem>

    <status>
        <abgabetoolstatus>CLOSED</abgabetoolstatus>
    </status>
</projekt>
</abgabe>




Sada je nagradno pitanje kako xmlabgabe.dtd napisati?
[ SuperC @ 11.12.2007. 21:43 ] @
evo i prva verzija DTD-a

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

<!ELEMENT db (entity +)>

<!ELEMENT benutzer(vorname | nachname)+>
<!ATTLIST entity
    id CDATA #REQUIRED
    name CDATA #REQUIRED
>

<!ELEMENT bilder (hscale | hscaleto | vscale | vscaleto )+>
<!ATTLIST entity
    id CDATA #REQUIRED
    name CDATA #REQUIRED

>

<!ELEMENT pixelitem (#PCDATA)>
<!ATTLIST bezeichnung
    type (owner | lastname | id | desc | link | img-path ) 

#REQUIRED


>

<!ELEMENT standort (bezeichnung*)>
<!ATTLIST standort
    place CDATA #IMPLIED

>

>

<!ELEMENT owner (bezeichnung*)>
<!ATTLIST owner
    place CDATA #IMPLIED

>



===================================
Ovo ispod je gomila greski koje mi sada javi


17: element owner: validity error : No declaration for element owner
<owner>vlasnik</owner>
^
18: element name: validity error : No declaration for element name
<name>proba</name>
^
19: element id: validity error : No declaration for element id
<id>0.1</id>
^
20: element Desc: validity error : No declaration for element Desc
<Desc>slika</Desc>
^
21: element link: validity error : No declaration for element link
<link>http://nowhere.com</link>
^
22: element img-path: validity error : No declaration for element img-path
<img-path>http://imageshack.us</img-path>
^
23: element hScale: validity error : No declaration for element hScale
<hScale>34</hScale>
^
24: element hScaleto: validity error : No declaration for element hScaleto
<hScaleto>4</hScaleto>
^
25: element vScale: validity error : No declaration for element vScale
<vScale>34</vScale>
^
26: element vScaleto: validity error : No declaration for element vScaleto
<vScaleto>4</vScaleto>
^
27: element pixelitem: validity error : Element pixelitem was declared #PCDATA but contains non text nodes
</pixelitem>
^
30: element abgabetoolstatus: validity error : No declaration for element abgabetoolstatus
<abgabetoolstatus>CLOSED</abgabetoolstatus>
^
31: element status: validity error : No declaration for element status
</status>
^
32: element projekt: validity error : No declaration for element projekt
</projekt>
^
33: element abgabe: validity error : No declaration for element abgabe
</abgabe>
^
[ SuperC @ 11.12.2007. 23:00 ] @
rijesio, DTD:


Code:
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT abgabe (projekt)>
<!ELEMENT projekt (opis, benutzer, pixelitem, status)>
<!ELEMENT opis (#PCDATA)>
<!ELEMENT benutzer (Bilder )>
<!ELEMENT Bilder (scale1, scale2, scale3, scale4)>
<!ELEMENT scale1 (#PCDATA)>
<!ELEMENT scale2 (#PCDATA)>
<!ELEMENT scale3 (#PCDATA)>
<!ELEMENT scale4 (#PCDATA)>

<!ELEMENT pixelitem (owner, name, id, Desc, link, img-path, hScale, hScaleto, vScale, vScaleto)>
<!ELEMENT owner (#PCDATA )>
<!ELEMENT name (#PCDATA )>
<!ELEMENT id (#PCDATA )>
<!ELEMENT Desc (#PCDATA )>
<!ELEMENT link (#PCDATA )>
<!ELEMENT img-path (#PCDATA )>
<!ELEMENT hScale (#PCDATA )>
<!ELEMENT hScaleto (#PCDATA )>
<!ELEMENT vScale (#PCDATA )>
<!ELEMENT vScaleto (#PCDATA )>

<!ELEMENT status (abgabetoolstatus)>
<!ELEMENT abgabetoolstatus (#PCDATA )>

[ SuperC @ 11.12.2007. 23:47 ] @
e sada moram jos i XSD fajl napraviti iliti XML Schema, i ovdje nikako da rijesim dvije greske:


Code:
Fatal Error at file "Abgabe.xsd", line 46, column 4
   Message: Expected end of tag 'xsd:element'
Fatal Error at file "Abgabe.xml", line 3, column 9
   Message: Fatal error encountered during schema scan



a kod je:


Code:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xsd:element name="abgabe">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="opis"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="Keine Dokumentation keiner Webapplikation">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="Bilder"/>
        <xsd:element maxOccurs="unbounded" ref="scale"/>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="name" type="xs:string"/>
  <xsd:element name="scale">
    <xsd:complexType>
      <xsd:choice>
        <xsd:element ref="1x1"/>
        <xsd:element ref="2x1"/>
        <xsd:element ref="1x2"/>
        <xsd:element ref="2x1"/>
      </xsd:choice>
    </xsd:complexType>
  </xsd:element>
  <xsd:element name="pixelitem">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element ref="owner"/>
        <xsd:element ref="name"/>
        <xsd:element ref="id"/>
        <xsd:element ref="desc"/>
        <xsd:element ref="link"/>
        <xsd:element ref="img-path"/>
        <xsd:element ref="hscale"/>
        <xsd:element ref="hscaleto"/>
        <xsd:element ref="vscale"/>
        <xsd:element ref="vscaleto"/>
      </xsd:sequence>
    </xsd:complexType>
   <xsd:element name="pixelitem">
 </xsd:element>
 </xsd:schema>
[ mmix @ 12.12.2007. 07:37 ] @
Citat:
SuperC: <xsd:element name="pixelitem">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="owner"/>
<xsd:element ref="name"/>
<xsd:element ref="id"/>
<xsd:element ref="desc"/>
<xsd:element ref="link"/>
<xsd:element ref="img-path"/>
<xsd:element ref="hscale"/>
<xsd:element ref="hscaleto"/>
<xsd:element ref="vscale"/>
<xsd:element ref="vscaleto"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="pixelitem">
</xsd:element>
</xsd:schema>


Nije ti well formed, bold linija ti je visak.
[ SuperC @ 12.12.2007. 09:42 ] @
Probah i onda dobijem druge dvije greske :):)

Code:
Fatal Error at file "Abgabe.xsd", line 45, column 4
   Message: Expected end of tag 'xsd:schema'
Fatal Error at file "Abgabe.xml", line 3, column 9
   Message: Fatal error encountered during schema scan
[ mmix @ 12.12.2007. 15:38 ] @
Ok, evo je lista problema koji more tvoj XSD da ne bi jedno po jedno trebili:

1. Koristis xs:string tip za jedan element iako si taj namespace registrovao sa prefixom xsn
2. Fali ti targetNamespace, onaj po kome ce se XML pozivati na njega.
3. xsd:choice ne sluzi za limitiranje mogucih vrednosti taga, sluzi za odabir jednog od pod-tagova, ono sto ti trazis je simple type enumeration restriction.
4. Ako tag sadrzi ista vise od osnovnih podataka, nor atribut ili podtagove, automatski postaje complex type i uvek mora eksplicitno da se napomene
5. Nigde ne pominjes tipove podataka koji su ti u implicitnim ili simple tipovima.
6. Ako imas XSD ne treba ti DTD, sve sto ti treba za validaciju je vec u xsd-u i xsd ima mnogo vise mogucnosti za preciznije definisanje, a i brate u XML formatu je
7. MNOGO MNOGO vaznije, imas fundamentalnu gresku u razumevanju XMLa i XSDa. Xml nosi podatke, xsd nosi semu tog xml-a, njime odredjujes tagove i njihove tipove, ne sadrzaj koji ide u njih. Dakle sema koju ti trazis je sledeca:

Code:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.elitesecurity.org/t300733" 
      attributeFormDefault="unqualified" elementFormDefault="qualified">
  <xs:element name="abgabe">
    <xs:complexType>
      <xs:sequence minOccurs="1" maxOccurs="1">
        <xs:element name="projekt">
          <xs:complexType>
            <xs:sequence minOccurs="1" maxOccurs="1">
              <xs:element name="projektbezeichnung" type="xs:string" />
              <xs:element name="benutzer">
                <xs:complexType>
                  <xs:sequence minOccurs="1" maxOccurs="1">
                    <xs:element name="Bilder">
                      <xs:complexType>
                        <xs:sequence minOccurs="1" maxOccurs="unbounded">
                          <xs:element name="skale">
                            <xs:simpleType>
                              <xs:restriction base="xs:string">
                                <xs:enumeration value="1x1"/>
                                <xs:enumeration value="2x1"/>
                                <xs:enumeration value="1x2"/>
                                <xs:enumeration value="2x2"/>
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="pixelitem">
                <xs:complexType>
                  <xs:sequence minOccurs="1" maxOccurs="1">
                    <xs:element name="owner" type="xs:string" />
                    <xs:element name="name" type="xs:string" />
                    <xs:element name="id" type="xs:decimal" />
                    <xs:element name="Desc" type="xs:string" />
                    <xs:element name="link" type="xs:string" />
                    <xs:element name="img-path" type="xs:string" />
                    <xs:element name="hScale" type="xs:int" />
                    <xs:element name="hScaleto" type="xs:int" />
                    <xs:element name="vScale" type="xs:int" />
                    <xs:element name="vScaleto" type="xs:int" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
              <xs:element name="status">
                <xs:complexType>
                  <xs:sequence minOccurs="1" maxOccurs="1">
                    <xs:element name="abgabetoolstatus" type="xs:string" />
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>


Kad target namespace ubasic u XML kao default namespace, validacija prolazi bez problema:

Code:

<?xml version="1.0" encoding="utf-8"?>
<abgabe xmlns="http://www.elitesecurity.org/t300733">
  <projekt>
    <projektbezeichnung>Keine Dokumentation keiner Webapplikation</projektbezeichnung>
    <benutzer>
      <Bilder>
        <skale>1x1</skale>
        <skale>2x1</skale>
        <skale>1x2</skale>
        <skale>2x2</skale>
      </Bilder>
    </benutzer>
    <pixelitem>
      <owner>vlasnik</owner>
      <name>proba</name>
      <id>0.1</id>
      <Desc>slika</Desc>
      <link>http://nowhere.com</link>
      <img-path>http://imageshack.us</img-path>
      <hScale>34</hScale>
      <hScaleto>4</hScaleto>
      <vScale>34</vScale>
      <vScaleto>4</vScaleto>
    </pixelitem>
    <status>
      <abgabetoolstatus>CLOSED</abgabetoolstatus>
    </status>
  </projekt>
</abgabe>