XMLSchema: Extensions

Status
Nicht offen für weitere Antworten.

byte

Top Contributor
Moin,

ich möchte eine Erweiterung zu einem bestehenden XML Schema schreiben. Und zwar möchte ich es realisieren, dass ich allen Elementen beliebige Attribute hinzufügen kann (das wird sich später wohl noch ändern, aber da ich noch nicht genau weiss, welche zusätzlichen Attribute ich benötige, möchte ich das erstmal nicht beschränken). Irgendwie sind meine Schema Kenntnisse aber zu begrenzt, ich kriegs einfach nicht hin.

Mein Ansatz bisher sieht so aus:

Code:
<xsd:schema xmlns="http://www.cs.tu-bs.de/ips"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:archinst="http://www.ics.uci.edu/pub/arch/xArch/instance.xsd"
            xmlns:archtypes="http://www.ics.uci.edu/pub/arch/xArch/types.xsd"
            targetNamespace="http://www.cs.tu-bs.de/ips"
            elementFormDefault="qualified"
            attributeFormDefault="qualified">

  
  <xsd:import namespace="http://www.ics.uci.edu/pub/arch/xArch/instance.xsd"
              schemaLocation="http://www.isr.uci.edu/projects/xarchuci/core/instance.xsd"/>
  <xsd:import namespace="http://www.ics.uci.edu/pub/arch/xArch/types.xsd"
              schemaLocation="http://www.isr.uci.edu/projects/xarchuci/ext/types.xsd"/>
  
  
  <xsd:complexType name="Test">
    <xsd:complexContent>
      <xsd:extension base="archtypes:ComponentType">
        <xsd:anyAttribute namespace="##any" />
      </xsd:extension>
    </xsd:complexContent>
  </xsd:complexType>
  
  
</xsd:schema>

So funktionierts nur leider nicht, was ja auch logisch ist, weil ich ja einen neuen ComplexType definiere, aber weiterhin die Typen aus den original Schemas nutze. Ich hoffe, ihr versteht was ich meine. Ich möchte die Typen aus den original Schemas ganz normal verwenden, aber halt mit beliebigen zusätzlichen Attributen.

Außerdem weiss ich nicht, ob es eine Wildcard für QNames gibt, so dass ich das ganze erstmal auf ein Element (archtypes:ComponentType) beschränkt habe. Gibts da ne Möglichkeit, die Extension auf alle Elemente zu erweitern, also sowas wie xsd:anyType?

Ich stehe irgendwie ziemlich auf dem Schlauch. :bahnhof:


PS: Die original Schemas möchte ich so lassen wie sie sind.
 

byte

Top Contributor
OK, da anscheinend niemand eine Idee hat, hier eine andere Idee zur Lösung meines Problems:

Gibts vielleicht ne Möglichkeit, dass ich den Parser dazu bewegen kann, Elemente bzw. Attribute eines bestimmten Namespaces bei der Validierung zu ignorieren?
 

byte

Top Contributor
Ich habe meinen Denkfehler nun gefunden und kann das Problem für mich lösen. Hier die Erklärung:


Man hat ein Schema A und schreibt eine Extension dazu in Schema B. Nun baut man eine XML Datei auf Schema A auf, möchte in diesem Kontext aber ComplexTypes aus Schema B nutzen. Dann muss man bei den entsprechenden Elementen explizit auf den erweiterten ComplexType aus B verweisen durch ein Attribute xsi:type="ns:ExtendedType".

Edit: Warum funzt das Abhaken nicht?
 
Status
Nicht offen für weitere Antworten.

Oben