Announcement

Collapse
No announcement yet.

XML-Schema mit Attributen??

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

  • XML-Schema mit Attributen??

    Moin.

    Ich versuche, die XML-Daten eines anderen Programms schön übersichtlich in MS-Excel zu importieren und zu bearbeiten. Obwohl ich kaum Ahnung von der Materie habe, gelangen mir erste Anfänge um eine passende Schema-Datei zu schreiben. Jedoch an einem Element hänge ich fest und weiß nicht weiter. -Im Beispiel "Sources" bzw "Source Page":

    So liegen die XML-Daten vor (gekürzte Form):
    Code:
    <Einträge>
      <Eintrag>
        <Key>KeyOne</Key>
        <Name>Erster</Name>
        <Sources>
          <Source Page="12">Heft</Source>
          <Source Page="345">Buch</Source>
        </Sources>
      </Eintrag>
      <Eintrag>
        <Key>KeyTwo</Key>
        <Name>Zweiter</Name>
        <Sources>
          <Source Page="21">Briefe</Source>
          <Source Page="345">Buch</Source>
          <Source Page="48">Bierdeckel</Source>
        </Sources>
      </Eintrag>
      <Eintrag>
        <Key>KeyDrei</Key>
        <Name>Dritter</Name>
        <Source Page="75">Bierdeckel</Source>
      </Eintrag>
    </Einträge>
    So hätte ich sie gerne in der Tabelle:

    Key |Name | Page1 | Source1 | Page2 | Source2 | ... Page9 | Source9

    KeyOne | Erster | 12 | Heft | 345 | Buch
    KeyTwo | Zweiter | 21 | Briefe | 345 | Buch | 48 | Bierdeckel


    Doch ich bekomme einfach nicht die Seitennummer angezeigt...

    Das ist mein Versuch mit der XSD:
    Code:
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
      <xs:element name="Einträge">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="Eintrag" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="Eintrag">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="Key"/>
            <xs:element name="Name"/>
            <xs:element name="Sources">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="Source" minOccurs="0" maxOccurs="unbounded"/>
                </xs:sequence>
                <xs:attribute name="Page" type="xs:integer"/>
              </xs:complexType>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>
    Könnt Ihr mir vielleicht mit diesem Problem weiterhelfen?
    Vielen Dank schonmal im Voraus!!
    Zuletzt editiert von Dankeschön; 18.08.2019, 22:28.

  • #2
    Originally posted by Dankeschön View Post
    So hätte ich sie gerne in der Tabelle:

    Key |Name | Page1 | Source1 | Page2 | Source2 | ... Page9 | Source9 |

    KeyOne | Erster | 12 | Heft | 345 | Buch
    KeyTwo | Zweiter | 21 | Briefe | 345 | Buch | 48 | Bierdeckel
    Wahrscheinlich ist das nicht die Anwort, die Du hören willst.

    1. Wie definiert sich eine Reihenfolge/ Priorität (in XML / RDBMS), die Du durch die Nummerierung der Tabellenspalten festschreibst?
    2. Wie sieht es in der Zieltabelle Deiner Wunschvorstellung mit Normalisierung aus?
    3. Wie verträgt sich diese Vorstellung damit, dass XML ohne Probleme beliebig viele X davon enthalten kann, von denen Du 9 vorsehen willst?
    4. Willst Du wirklich ein Schema definieren oder eher eine Transformation? Oder beides?

    Konkret:
    Laut XML von Dir, wäre SOURCES in einer relationalen Datenbank eine eigene Tabelle, die beliebig viele Einträge in Bezug zur Tabelle EINTRAG / TALENTS halten kann.

    Comment


    • #3
      Originally posted by defo2 View Post
      Wahrscheinlich ist das nicht die Anwort, die Du hören willst.

      1. Wie definiert sich eine Reihenfolge/ Priorität (in XML / RDBMS), die Du durch die Nummerierung der Tabellenspalten festschreibst?
      2. Wie sieht es in der Zieltabelle Deiner Wunschvorstellung mit Normalisierung aus?
      3. Wie verträgt sich diese Vorstellung damit, dass XML ohne Probleme beliebig viele X davon enthalten kann, von denen Du 9 vorsehen willst?
      4. Willst Du wirklich ein Schema definieren oder eher eine Transformation? Oder beides?

      Konkret:
      Laut XML von Dir, wäre SOURCES in einer relationalen Datenbank eine eigene Tabelle, die beliebig viele Einträge in Bezug zur Tabelle EINTRAG / TALENTS halten kann.
      Zu 3.:
      Es werden nie mehr als 9! Aktuell eigentlich sogar nur 5, aber 'n bisschen Luft is besser.

      Zum Rest:
      Sorry, ich verstehe echt nur Bahnhof... Heißt das soviel wie "Geht nicht" ?

      Comment


      • #4
        Die Schema-Deklaration für das "Source"-Element (als Element mit einem Attribut "Page" aber einfachem, nicht-Element Inhalt) müsste so aussehen:
        Code:
          <xs:element name="Source">
            <xs:complexType>
              <xs:simpleContent>
                <xs:extension base="xs:string">
                  <xs:attribute name="Page" use="required" type="xs:integer"/>
                </xs:extension>
              </xs:simpleContent>
            </xs:complexType>
          </xs:element>
        Ob das mit Excel hilft bzw. wie Excel ein W3C Schema zur Konvertierung von XML in eine Tabelle benutzt, ist mir nicht bekannt.

        Comment

        Working...
        X