Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Funktion und Sinn von XML Schemata (https://www.delphipraxis.net/108925-funktion-und-sinn-von-xml-schemata.html)

Luckie 22. Feb 2008 12:05

Re: Funktion und Sinn von XML Schemata
 
War Käse, was ich geschrieben habe.

Ich wollte das ganze jetzt etwas erweitern:
XML-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<verlag xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="verlag02.xsd">
  <buch>
    <titel>Der Duden</titel>
    <autor>Dieter Duderich</autor>
    <erschdat>1987</erschdat>
    <isbn>3-86680-192-9</isbn>
  </buch>
  <buch>
    <titel>Pflanzen</titel>
    <autor>Paul Pflanzer</autor>
    <erschdat>1996</erschdat>
    <isbn>3-12656-189-9</isbn>
  </buch>
</verlag>
Dazu habe ich mir folgendes Schema erstellt:
XML-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="verlag">
    <xs:sequence>
      <xs:complexType name="buch">
        <xs:sequence>
          <xs:element name="titel" type="xs:string"/>
          <xs:element name="autor" type="xs:string"/>
          <xs:element name="erschdat" type="xs:string"/>
          <xs:element name="isbn" type="xs:string"/>
        </xs:sequence>
      </xs:complexType>
    </xs:sequence>
  </xs:element>
</xs:schema>
In Zeile vier sagt er mir:
Zitat:

Encountered child was not expected
:gruebel:

So muss es aussehen:
XML-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:complexType name="ctbuch">
    <xs:sequence>
      <xs:element name="titel" type="xs:string"/>
      <xs:element name="autor" type="xs:string"/>
      <xs:element name="erschdat" type="xs:string"/>
      <xs:element name="isbn" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
  <xs:element name="verlag">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="buch" type="ctbuch" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
;)

Khabarakh 22. Feb 2008 13:12

Re: Funktion und Sinn von XML Schemata
 
Zitat:

Zitat von Luckie
Zitat:

Encountered child was not expected
:gruebel:

VS ist da ein _wenig_ ausführlicher :stupid: :
Zitat:

Warning The element 'element' in namespace 'http://www.w3.org/2001/XMLSchema' has invalid child element 'sequence' in namespace 'http://www.w3.org/2001/XMLSchema'. List of possible elements expected: 'annotation, simpleType, complexType, unique, key, keyref' in namespace 'http://www.w3.org/2001/XMLSchema'.
So funktioniert es auch ohne benannten complexType:
XML-Code:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
   <xs:element name="verlag">
      <xs:complexType>
         <xs:sequence>
            <xs:element name="buch" maxOccurs="unbounded">
               <xs:complexType>
                  <xs:sequence>
                     <xs:element name="titel" type="xs:string"/>
                     <xs:element name="autor" type="xs:string"/>
                     <xs:element name="erschdat" type="xs:string"/>
                     <xs:element name="isbn" type="xs:string"/>
                  </xs:sequence>
               </xs:complexType>
            </xs:element>
         </xs:sequence>
      </xs:complexType>
   </xs:element>
</xs:schema>

Luckie 22. Feb 2008 13:39

Re: Funktion und Sinn von XML Schemata
 
Ah, danke. Wurde als alternative aufgenommen.

Elvis 22. Feb 2008 15:47

Re: Funktion und Sinn von XML Schemata
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Luckie
Ah, danke. Wurde als alternative aufgenommen.

Das VisualStudio hat einen ziemlich coolen XSD Designer.
Damit kannst du dir schnell mal ein Dokumentenformat zusammen klicken. Ich nutze das Ding schon seit Jahren . :-)
Du kannst auch einfach eine XML im studio öffnen und dir aus der XML ein XSD geneieren lassen, was du dann als Fundament nehmen kannst.
Ich habe mal Klarabellas (:mrgreen:) Version damit etwas aufgewertet:
XML-Code:
<?xml version="1.0" encoding="iso-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="www.luckie.de/BuchBleistift"
           xmlns:bv="www.luckie.de/BuchBleistift"
           elementFormDefault="qualified">
  <xs:element name="verlag">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="buch"
                    maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="titel"
                          type="xs:string" />
              <xs:element name="autor">
                <xs:simpleType>
                  <xs:restriction base="xs:string">
                    <xs:minLength value="1" />
                  </xs:restriction>
                </xs:simpleType>
              </xs:element>
              <xs:element name="erschdat"
                          type="xs:date" />
              <xs:element name="isbn"
                          type="bv:isbnType">
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="isbnType">
    <xs:restriction base="xs:string">
      <xs:pattern value="[0-9]{3}[-][0-9]{3}[-][0-9]{3}" />
    </xs:restriction>
  </xs:simpleType>
</xs:schema>
Aber IMO sind da zu viele Elemente. Die ISBN und das Datum hätten Attribute sein können, Titel und Author eigentlich auch...
Und wer so dumme, abgekürzte Bezeichner wie "erschtdat" in ein wirkliches Schema packen würde (nicht wie hier einen Bleistift), gehört in den Knast... :shock:

Und zum Validieren in deinem Code kannst du dir mal die Klasse XmlSchemaSet ansehen.

Luckie 22. Feb 2008 20:15

Re: Funktion und Sinn von XML Schemata
 
Dank dir auch noch mal für deine Mühe, aber das kann XMLPad auch. ;) Aber gut, dass du das mit dem VS erwähnst. Dann kann ich jetzt schon zwei Programm erwähnen die man als Editoren nutzen kann. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:44 Uhr.
Seite 3 von 3     123   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz