Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Undefinierte Node-Namen; mit XSD möglich?
7.e.Q
myCSharp.de - Member

Avatar #avatar-3402.jpg


Dabei seit:
Beiträge: 938
Herkunft: Scheeßel

Themenstarter:

Undefinierte Node-Namen; mit XSD möglich?

beantworten | zitieren | melden

verwendetes Datenbanksystem: XML

Hi Leute,

ist es möglich, in einem XML Schema zu definieren, dass n Ebenen unterhalb des Rootnodes Nodes kommen, die keinen festen Namen, aber dennoch mindestens ein festes Attribut haben? Und ist es möglich, zu definieren, dass ab Ebenen unterhalb dieser n Ebenen mit unspezifiziertem Namen nur noch eine fest definierte Struktur folgen darf?

Folgender Hintergrund: ich definiere mir Adress-IDs mittels einer XML-Datei. Diese Adress-IDs bestehen aus drei Bytes. Ich verwende sie, um eine selbstentwickelte Hardware über UDP-Pakete zu steuern (die drei Adress-Bytes legen fest, welche Komponente ich anspreche). Sie sind in der XML Datei so definiert, dass ich sie per XPath direkt erreichen kann. Beispiel (rot = variabel/unspezifiziert; grün=fest/spezifiziert:

<IDTree>
<!-- Zwischen hier... -->
  <Staubsauger id="0x00">
    <Sensoren id="0x00">
      <FilterFuellstand id="0x00" />
      <DrehzahlVentilator id="0x01" />
    </Sensoren>
    <Aktoren id="0x01">
      <DrehzahlVentilator id="0x00">
<!-- ... und hier in der Hierarchie sind die Node-Namen unspezifiziert -->
<!-- Unterhalb dieser Ebene sind die Node-Namen und die Hierarchie fest spezifiziert -->
        <Description>
          <ShortDesc>Setzt die Drehzahl und Richtung des Saugventilators</ShortDesc>
          <Field type="int" bitLength="32" name="Drehzahl" />
          <Field type="byte" bitLength="8" name="Drehrichtung">
            <Value value="0x00" means="Ansaugen" />
            <Value value="0x01" means="Ausblasen" />
          </Field>
        </Description>
      </DrehzahlVentilator>
    </Aktoren>
  </Staubsauger>
</IDTree>

Somit kann ich eine Adress-Bytesequenz über /IDTree/Staubsauger/Sensoren/DrehzahlVentilator ansprechen und erhalte dadurch a) bessere Lesbarkeit, b) bessere und c) zentrale Wartbarkeit, wenn sich was an den IDs ändert. Da ich in einem Team an der Hardware arbeite, ist c) wichtig, weil Änderungen oder Erweiterungen an den Adressen natürlich für alle Bereiche des Projekts gelten sollen. Wildwuchs soll vermieden werden.

Fest spezifiziert sein sollen ausnahmslos alle Attribute, wie ich sie im Beispiel genannt habe. Das id-Attribut soll für die Adress-Zweige verpflichtend sein. Die anderen Attribute sollen teilweise optional (mit Standardwert) oder ebenfalls pflicht sein.

Unterhalb der Ebene, auf der sich beispielsweise FilterFuellstand oder DrehzahlVentilator befinden, lege ich, wie im Beispiel zu sehen, eine Dokumentationsstruktur ab. Sie ist fest definiert, beginnt mit einem Node mit spezifischem Namen "Description" und erhält darunter ein paar ebenfalls fest benamte Nodes mit definierter Hierarchie.

Nun ist die kurze und knackige Frage: ist es möglich, diese Vorgaben in ein XML Schema zu gießen?

Vielen Dank!

Cheers,
Hendrik
private Nachricht | Beiträge des Benutzers
Yellow
myCSharp.de - Experte

Avatar #avatar-2347.png


Dabei seit:
Beiträge: 832

beantworten | zitieren | melden

Hallo 7.e.Q,

eine direkte Antwort auf deine Frage habe ich nicht. Aber um unspezifizierte Elemente verwenden zu können gibt es xsd:any (oder xsd:anyType als Datentyp) in der Schemadefinition. Zusammen mit dem Attribut processContents lassen sich Schemavalidierungen erzwingen, unterdrücken oder zulassen wenn vorhanden. Vielleicht lässt sich damit etwas bewerkstelligen.

-yellow
Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de
private Nachricht | Beiträge des Benutzers
7.e.Q
myCSharp.de - Member

Avatar #avatar-3402.jpg


Dabei seit:
Beiträge: 938
Herkunft: Scheeßel

Themenstarter:

beantworten | zitieren | melden

Ah, guck ich mir mal an, danke!
private Nachricht | Beiträge des Benutzers