2

我有这个 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>

我想在这里做两件事

  1. 按钮内容文本在所有情况下都应该是强制性的
  2. 如果replace属性的值为“附加”,那么属性id将是强制性的
4

2 回答 2

3

如果您将此设置为带有简单内容的复杂类型,则可以使用 xs:enumeration 限制文本的允许值。如果您将其设为具有混合内容的复杂类型,那么您将无法限制文本中的内容。在我看来,您在这里想要简单的内容,而不是混合内容(没有子元素)。

您不能使用 XSD 1.0 定义共同约束(一件事的值取决于另一件事的值) - 因为您需要 XSD 1.1。目前仅在 Saxon 和 Xerces 中提供对 XSD 1.1 的支持。

于 2011-03-17T08:33:55.040 回答
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>
于 2011-03-18T04:19:19.530 回答