Zum Inhalt springen

XML Schema entweder keins oder zwei Attribut


Sephyr

Empfohlene Beiträge

Hallo,

Ich habe eine herrausforderung ein XML-Schema betreffend. Ich will zwei Attribute in einem Element haben, welche entweder zusammen oder gar nicht angegeben werden sollen:


<subparam name="art" nullable="false" type="[…].business.transfer.UrlaubArt" />

<subparam name="zeitraumStart" nullable="false" [COLOR="Red"]relation="le" relationAttr="zeitraumEnde"[/COLOR] type="java.util.Date" />

Mein Schema sieht bis jetzt so aus:

  <xsd:complexType name="subparamType">

    <xsd:sequence>

   	<xsd:element name="subparam" type="subparamType" maxOccurs="unbounded" minOccurs="0"></xsd:element>

    </xsd:sequence>

    <xsd:attributeGroup ref="nameAttr"></xsd:attributeGroup>

    <xsd:attributeGroup ref="paramAttr"></xsd:attributeGroup>

    <xsd:attributeGroup ref="subparamAttr"></xsd:attributeGroup>

  </xsd:complexType>


[…]


  <xsd:attributeGroup name="subparamAttr">

    <xsd:attribute  name="relationAttr" use="required" type="xsd:string"></xsd:attribute>

    <xsd:attribute  name="relation" use="required" type="vergleich"></xsd:attribute>

  </xsd:attributeGroup>


  <xsd:simpleType name="vergleich">

    <xsd:restriction base="xsd:string">

      <xsd:enumeration value="e"/>

      <xsd:enumeration value="g"/>

      <xsd:enumeration value="l"/>

      <xsd:enumeration value="ge"/>

      <xsd:enumeration value="le"/>

    </xsd:restriction>

  </xsd:simpleType>

1. Gibt es eine Möglichkeit dieses Problem zu lösen?

2. Gibt es eine Möglichkeit zu definieren, dass der Wert des relationAttr-Attributs eine gültige ID innerhalb des Dokuments ist?

Danke und Gruss

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mal zum Ansatz:

zu 1. Jede Probgrammiersprache hat doch Funktionen, mit denen du XML-Knoten und Attribute parsen kannst.

Warum zählst du die Attribute nicht, bzw. prüfst diese, ob sie (also die Attribute) gültig sind, und zählst dementsprechend hoch bevor du eine Ausgabe machst.

zu 2. Sicher gibt es die :D (nein ich poste nun keine code, um nicht wieder was auf den Deckel zu bekommen... wobei ich eh noch nicht ganz verstanden habe, was wie wo welche ID da gültig sein soll :floet: ) aber möglich ist es immer ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also das simpelste Modell. um eine Spalte an Framdschlüssel zu binden, wird wahrscheinlich eine Liste sein, die in der Primärschlüsselspalte hinterlegt ist.

z.B.

<fkeys table="a1" cell="b5" />

<fkeys table="aa7" cell="xD2" />

...

um vom Fremdschlüssel auf den Primär oder andere Fremdschlüssel zu kommen gibst du der Fremdschlüsselspalte die lage der Primärschlüsselspalte mit, und hast von dem Punkt aus ja wieder alle Fremdschlüssel im Zugriff

Link zu diesem Kommentar
Auf anderen Seiten teilen

Könnte mir wirklich weiterhelfen...

Und wo wir schonmal dabei sind: Ist es möglich Schlüssel nur innerhalb eines Elements bzw. einer Stufe innerhalb eines Elementes zu verteilen?

meinst du damit dass der Primär und fremdschlüssel innerhalb einer art Tabelle ist, in der Primärschlüssel die eine Spalte, und Fremdschlüssel eine andere Spalte ist? wenn ja sollte es auf die selbe art und weise funktionieren, da du den spalten ja die keys zuweist, und nicht der "Tabelle" an sich...

wenn du z.B. noch einen weiteren Wert vorranstellst (z.B. cat_1 statt nur 1), müsstest du bei der beziehungsdefinition eventuell noch einen prevalue="cat_" hinzufügen oder Wert dahinter (z.B. statt 1 -> 1_cat) einen postvalue="_cat".

Möglichkeiten gibt es viele, Beziehungen auch innerhalb von XML zu definieren. Bist da ja vollkommen frei, da du die Logik dafür selbst definierst.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...