我有这个XML
<button onclick="alert('submit')" replace="append" forid="loginbutton" id="btnLogin" >Click Me</button>
我有这个XSD
<xs:element name="button" >
<xs:complexType mixed="true">
<xs:attribute name="forid" use="required" type="xs:string" />
<xs:attribute name="onclick" use="required" />
<xs:attribute name="id" use="optional" />
<xs:attribute name="replace" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="modify" />
<xs:enumeration value="append" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
我想要两件事
replace
属性的值为'追加',那么属性id
将是强制性的答案 0 :(得分:3)
如果您将其设置为带有简单内容的复杂类型,则可以使用xs:enumeration约束文本的允许值。如果你把它变成一个带有混合内容的复杂类型,那么你就无法限制文本中的内容。在我看来,你想要简单的内容,而不是混合内容(没有子元素)。
您无法使用XSD 1.0定义共同约束(一件事物的值取决于另一件事物的值) - 因为您需要XSD 1.1。目前只有Saxon和Xerces才支持XSD 1.1。
答案 1 :(得分:1)
我设法以某种方式完成它。我完全不明白,基本上我只是做了反复试验。如果有人能解释这意味着什么,我将感激不尽。
<xs:element name="button">
<xs:complexType>
<xs:simpleContent>
<xs:restriction base="xs:anyType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1" />
</xs:restriction>
</xs:simpleType>
<xs:attribute name="forid" use="required" type="xs:string" />
<xs:attribute name="onclick" />
<xs:attribute name="id" use="optional" />
<xs:attribute name="type" use="required" />
<xs:attribute name="replace" use="required">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="modify" />
<xs:enumeration value="append" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:restriction>
</xs:simpleContent>
</xs:complexType>
</xs:element>