# XMLSchema: Extensions



## byte (19. Nov 2005)

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:


```
<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 (24. Nov 2005)

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 (29. Nov 2005)

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?


----------

