Announcement

Collapse
No announcement yet.

xml datei und schema

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • xml datei und schema

    hi

    hab an der fh ne aufgabe bekommen die eine ausgabe der noten eines student vorsieht. habe das so gelöst

    <?xml version="1.0" encoding="utf-8" ?>
    - <Notenliste>
    -<Student>
    <Name>Erich Kempinski</Name>
    <Matrikelnummer>510191</Matrikelnummer>
    </Student>
    <Fach Mathematik1="2.3" Dv1="2.5" Physik1="2.1" Werkstoffkunde="2.2" KonTz="2.3" Chemie="2.7" Ame="2.3" />
    </Notenliste>

    Anschließend muss ich daraus ein schema erstellen und dort regulare ausdrücke definieren.Die matrikelnummer soll aus 6 zaheln von 0-9 bestehen und die noten dürfen nur (dezimal)zahlen zwischen 1 und 6 sein. Habe das auch gemacht jedoch wurde es abgelehnt. Hoffe ihr könnt mir bissel unter die arme greifen (das rote ist kommentar vom prof.,das blaue kommentar von mir)

    <?xml version="1.0" encoding="utf-8"?>
    <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="Notenliste">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="Student">
    <xs:complexType>
    <xs:restriction base="xsd:string">
    <xs:sequence>
    <xs:element name="Name" type="xs:string" />
    <xs:element name="Matrikelnummer"/>
    Das ist so falsch
    <xsattern value="[0-9]{6}"/>
    </xs:sequence>
    </xs:restriction>
    </xs:complexType>
    </xs:element>
    <xs:element name="Fach">
    <xs:complexType>
    <xs:restriction base="xs:decimal">
    <xs:attribute name="Mathematik1" type="xs:decimal" use="required" />
    <xs:attribute name="Dv1" type="xs:decimal" use="required" />
    <xs:attribute name="Physik1" type="xs:decimal" use="required" />
    <xs:attribute name="Werkstoffkunde" type="xs:decimal" use="required" />
    <xs:attribute name="KonTz" type="xs:decimal" use="required" />
    <xs:attribute name="Chemie" type="xs:decimal" use="required" />
    <xs:attribute name="Ame" type="xs:decimal" use="required" />Das ist so ebenfalls falsch, auf diese Weise muss für jedes Fach ein einzelnes Element angelegt werden. Es gibt ein Element Fach, dieses hat ein Atttribut Bezeichnung oder ähnliches und in der xml-Datei wird der Wert gesetzt.
    Verstehe ich das richtig das ich nur einmal allgemein einen regulären Ausdruck definieren soll, so dass nur zahlen von 1-6 erlaubt werden? Wenn ja wie geht das.... weil das müssen ja auch dezimalzahlen sein.
    <xs:enumeration value="2.3"/>
    <xs:enumeration value="2.5"/>
    <xs:enumeration value="2.1"/>
    <xs:enumeration value="2.2"/>
    <xs:enumeration value="2.3"/>
    <xs:enumeration value="2.7"/>
    <xs:enumeration value="2.3"/>
    </xs:restriction>
    </xs:complexType>
    </xs:element>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    </xs:schema>

  • #2
    Struktur-Ansatz:
    Code:
    <Notenliste>
      <Student>
        <Name>...</Name>
        <Matrikelnummer>123456</Matrikelnummer>
        <!-- Matrikelnummer könnte auch Attribut von Student oder Name sein -->
        <Faecher>
          <Fach Bezeichnung="Fach 1" Note="1.0"/>
          <Fach Bezeichnung="Fach 2" Note="3.5"/>
          <Fach Bezeichnung="Fach 3" Note="6.0"/>
        </Faecher>
      </Student>
    </Notenliste>
    Ein Muster für 1.0 bis 6.0 wäre: ([1-5]{1}\.[0-9]{1})|(6.0) (abgeleitet von xs:decimal oder xs:string)

    Das Schema solltest Du nun selbst hinbekommen (Fach-Bezeichnungen als Enumerations, 1-n Student- bzw. Fach-Elemente, ...).

    Comment


    • #3
      hi

      schonmal tausend dank für deine mühe! Ist den an meinem ansatz der xml falsch, dachte das wäre eigentlich ganz gut. bei deiner version müsste ich ja jetzt auch fach 1,fach2... mit nem regulären audruck einfügen. Oder hast du das aus dem kommentar vom prof. abgeleitet? studiere eigentlich maschinenbau und hab wirklich nicht viel ahnung davon

      Comment


      • #4
        ah ok, hast es aus dem kommentar

        kann man faecher auch weglassen? ich meine so

        <Notenliste>
        <Student>
        <Name>Erich Kempinski</Name>
        <Matrikelnummer>123456</Matrikelnummer>
        <Fach Bezeichnung="Mathe 1" Note="1.0"/>
        <Fach Bezeichnung="WK" Note="3.5"/>
        <Fach Bezeichnung="Chemie " Note="3.0"/>
        </Student>
        </Notenliste>

        Comment


        • #5
          Sicher kann man Faecher auch weglassen, so lange das XML wohlgeformt bleibt. Allerdings sind zu flache Strukturen bei der späteren Verarbeitung (etwa mit XSLT) oft hinderlich, weil Beginn und Ende bestimmter Elemente dann mühsamer zu ermitteln sind. Wenn es mehrere Fach-Elemente gibt, ist deren Anordnung unter einem quasi gruppierenden Elternelement Faecher IMHO sinnvoller. Das wird Dein Prof vermutlich auch so sehen ;-).

          Comment


          • #6
            hi

            kann mir einer vieleicht das schema machen, das dürfte ja nicht viel arbeit sein wenn man es kann. Geht sich ja nur um die mat. nummer und die noten.

            Ich weiß das hört sich an als ob hier einer ankommt und sich die arbeit machen läßt- ist aber nicht so ich versuch schon seit 3 tagen irgendwas auf die beine zu stellen, jedoch wurden meine programme jetzt zum 4 abgelehnt. ich hab das noch nie gemacht und wurde von meinem prof. mit nem link im wiki abgespeist, ohne weiter erklärungen und auf meine fragemails reagiert der garnicht.

            würde mich auch mit 10 Euro bei genehmigung der arbeit erkenntlich zeigen. versprochen!
            Zuletzt editiert von boby; 04.06.2008, 20:28.

            Comment


            • #7
              Die Arbeit musst Du schon selbst machen und die Strukturvorlage sowie ein regulärer Ausdruck wurden ja bereits geliefert!

              Tipp: Mit dem Tool Liquid XML Studio 2008 lassen sich Schema-Dokumente grafisch aufbauen, vergleichbar mit dem Komfort von XMLSpy. Probiere es damit.

              Comment


              • #8
                na gut, ich trau mich einfach mal!

                <?xml version="1.0" encoding="utf-8" ?>
                <!--Created with Liquid XML Studio 2008 6.0.4.0 (http://www.liquid-technologies.com)-->
                <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
                <xs:element name="Notenliste">
                <xs:complexType>
                <xs:sequence>
                <xs:element minOccurs="0" name="Student">
                <xs:complexType>
                <xs:sequence>
                <xs:element minOccurs="0" name="Name" type="xs:string" />
                <xs:element minOccurs="0" name="Matrikelnummer">
                <xs:simpleType>
                <xs:restriction base="xs:integer">
                <xsattern value="[0-9]{6}"/>
                </xs:restriction>
                </xs:simpleType>
                </xs:element>
                <xs:element minOccurs="0" maxOccurs="unbounded" name="Fach">
                <xs:complexType>
                <xs:attribute name="Bezeichnung" type="xs:string" use="required" />
                <xs:attribute name="Note" use="required" />
                <xs:simpleType>
                <xs:restriction base="xs:decimal">
                <xsd:enumeration value="([1-5]{1}\.[0-9]{1})|(6.0)"/>
                </xs:restriction>
                </xs:simpleType>
                </xs:complexType>
                </xs:element>
                </xs:sequence>
                </xs:complexType>
                </xs:element>
                </xs:sequence>
                </xs:complexType>
                </xs:element>
                </xs:schema>


                bei der matrikelnummer bin ich mir recht sicher dass das so richtig ist, nur bei der note weiß ich es nicht genau. hatte kein passendes beispiel gefunden wo beim attribute ein regulärer ausdruck verwendet wird. Über tipps würd ich mich sehr freuen!

                Comment


                • #9
                  Sieht schon ganz gut aus, allerdings ist die Attributdefinition von Note fehlerhaft (/ zuviel sowie enumeration statt pattern, es soll ja nicht der reg. Ausdruck selbst im Attributwert stehen):

                  Code:
                  <xs:attribute name="Note" use="required">
                    <xs:simpleType>
                      <xs:restriction base="xs:decimal">
                        <xs:pattern value="([1-5]{1}\.[0-9]{1})|(6.0)"/>
                      </xs:restriction>
                    </xs:simpleType>
                  </xs:attribute>
                  Das Element Student sollte wohl auch eher mehr als 1x vorkommen dürfen, also setze dort: maxOccurs="unbounded".
                  (Beim Weglassen von maxOccurs und auch von minOccurs ist die Anzahl auf jeweils 1 festgelegt.)

                  Erzeuge zum Testen ein XML-Dokument und validiere dieses gegen das Schema. Den Hinweis zum Faecher-Element solltest Du auch noch umsetzen.

                  Comment


                  • #10
                    ([1-3]{1}\.[0-9]{1})|(4.0)|(5.0)

                    ist das der richtige ausdruck für noten von 1.0..2.3...2.9....3.9 und 4.0 und 5.0?

                    Comment


                    • #11
                      hi

                      ok, hatte es einfach mal so hochgeladen und war richtig, also entlich genehmigt. Der horror hat ein ende. Tausen dank nochmal an dich thomas, ohne dich wäre das nix geworden!!!Danke!

                      Comment


                      • #12
                        Eine Alternative wäre noch ([1-3]{1}\.[0-9]{1})|([4-5]{1}\.0) und die {1}-Angaben können auch entfallen. Zudem kann statt der Zeichenklasse [0-9] auch einfach \d (d wie digit) geschrieben werden. Die Schreibweise ([1-3]\.\d)|([4-5]\.0) wäre also ebenfalls verwendbar.

                        Comment

                        Working...
                        X