Hallo Thomas,
also die letzten Tage waren sehr ernüchternd, ich habe keine Möglichkeit gefunden, "dynamische" zulässige Attributewerte zu definieren. Da du aber auch leise angedeutet hast, dass man vielleicht das xml Design ändern könnte mal meine Frage in diese Richtung.
Ich habe ein XML Report (alles abstrakt, da sonst sehr umfangreich):
rootns:root
.
.
<sns:jacke AnzugRef="Leder">werte</sns:schuhe>
<sns:jacke AnzugRef="Stoff">werte</sns:schuhe>
<sns:jacke AnzugRef="Lack">werte</sns:schuhe>
<sns:hosen AnzugRef="Leder">werte</sns:schuhe>
<sns:schuhe AnzugRef="Leder">werte</sns:schuhe>
<sns:schuhe AnzugRef="Plastik">werteXY</sns:schuhe>
<!-- diese Zeile ist ungültig -->
<sns:schuhe AnzugRef="Lack">Wert</sns:schuhe
.
.
</rootns:root>
nun ein xsd file zur validierung
<element id="sns_shuhe" name="schuhe" type="rootns:stringItemType" .. ../>
<element id="sns_hosen" name="schuhe" type="rootns:stringItemType" .. ../>
<element id="sns_jacke" name="schuhe" type="rootns:stringItemType" .. ../>
<complexType name="stringItemType" final="extension">
<simpleContent>
<extension base="string">
<attrbuteGroup ref="rootns:notnumericItemAttrs"/>
</extension>
</simpleContent>
</complexType>
<attributeGroup name="notnumericItemAttrs">
<attributeGroup ref="rootns:allItemAttrs>
<attribute name="AnzugRef">
<simpleType>
<restriction base="string">
<enumeration value="Leder"/>
</restriction>
</simpleType>
</attribute>
</attributeGroup>
so und nun das folgende Problem, AnzugRef hat immer als Ausgangswert "Leder" und ist der einzig zulässige Wert. Jetzt möchte ich aber noch spezielle "erweiterungen" definieren, dass für das Element "schuhe" das Attribute "AnzugRef" zusätzlich den Wert Plastik annehmen darf, gleichzeitig dürfen alle anderen Elemente auch den Wert Plastik enthalten. Ich muesste also eine Art Erweiterung einbringen als zulässige Werte für "AnzugRef". Gleichzeitig soll es aber zudem ein weitere Bedingung geben, die für bestimmte Elemente aber den Bereich möglicher Werte einschränkt. Also etwa für "schuhe" dann doch nur "Leder" und "Plastik"
bezogen auf obiges Beispiel also muesste ich zwei sachen unterbringen,
1. eine Erweierung, dass AnzugRef zusätzlich die Werte Stoff, Lack, Plastik enthalten kann
2. Einschränkung für bestimmte Elemente z.B. schuhe für AnzugRef nur zulässig Leder und Plastik
Diese 2 Bedingungen wollte ich gleich in das xml File schreiben, so dass "dynamisch" das Schema abhängig von den Vorgaben validiert. Habe aber keinen Weg gefunden. Nun denke ich daran, die Vorgaben in ein extra File zu schreiben, da ich das Grundschema nicht anfassen möchte, da es ziemlich viele Elemente gibt und die Einschränkung für bestimmte Elemente übersichtlich sind. Wie könnte man also eine grundsätzliche Erweiterung für AnzugRef über alle Elemente einbinben und gleichzeitig für wenige Elemtente diese vorgenommene Erweiterung einschränken. Klingt etwas komplex und das Beispiel ist vielleicht auch nicht anschaulich, aber generell dürfte es sich doch hierbei um ein nicht gar zu exotisches Problem handeln - Erweiterung der zulässigen Werte plus Einschränkung der Erweiertung auf bestimmte Werte für bestimmte Elemente.
Gruß,
Holger