Frage zu XSD
Thomas Mell
- xml
- xsl
Hallo,
ich möchte mit XSD prüfen ob mindestens eins der Attribute fillColor und borderColor vorhanden ist, also eins der beiden oder beide.
Gefunden habe ich bisher nur Lösungen die mit <xs:unique/>
arbeiten. Das funktioniert aber nicht wenn beide Attribute vorhanden sind.
XML:
<rect fillColor="red" borderColor="black" />
XSD:
<xs:unique name="blub">
<xs:selector xpath="rect"/>
<xs:field xpath="@fillColor | @borderColor"/>
</xs:unique>
Hat jemand eine Idee wie man das machen kann? Grüße
Lieber Thomas,
<xs:unique name="blub"> <xs:selector xpath="rect"/> <xs:field xpath="@fillColor | @borderColor"/> </xs:unique>
vielleicht das Oder in zwei eigene Elemente aufspalten?
<xs:unique name="blub">
<xs:selector xpath="rect"/>
<xs:field xpath="@fillColor"/>
<xs:field xpath="@borderColor"/>
</xs:unique>
Full Disclosure: Ich habe nicht die geringste Ahnung.
Liebe Grüße
Felix Riesterer
Hallo Thomas,
ich möchte mit XSD prüfen ob mindestens eins der Attribute fillColor und borderColor vorhanden ist, also eins der beiden oder beide. Gefunden habe ich bisher nur Lösungen die mit
<xs:unique/>
arbeiten. Das funktioniert aber nicht wenn beide Attribute vorhanden sind. XML:<rect fillColor="red" borderColor="black" />
XSD:
<xs:unique name="blub"> <xs:selector xpath="rect"/> <xs:field xpath="@fillColor | @borderColor"/> </xs:unique>
Hat jemand eine Idee wie man das machen kann?
Hierfür eigenet sich eher xs:assert
(XML Schema 1.1):
<xs:element name="rect">
<xs:complexType>
<xs:attribute name="fillColor"/>
<xs:attribute name="borderColor"/>
<xs:assert test="count(@fillColor) + count(@borderColor) >= 1"/>
</xs:complexType>
</xs:element>
Grüße,
Thomas