我正在尝试为此元素创建xml架构......
<shoesize country="yes">35</shoesize>
基于w3学校这是解决方案......
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shoesize">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="country" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
我想要限制的是,属性只能是“是”或“否”,内容只能是小于50的整数。任何人都可以给我一些指示如何做到这一点。
好吧所以我让它在单独的文件中工作,但是当我将这段代码放入
中的大模式时<xsd:sequence>
<xsd:element name="something" type="xsd:string"/>
<xsd:element name="something else" type="xsd:string"/>
......
......
code above
....
...
</xsd:sequence>
我收到错误
s4s-elt-must-match.1: The content of 'sequence' must match (annotation?, (element | group | choice | sequence | any)*).
答案 0 :(得分:1)
您必须分两个阶段执行此操作,首先定义一个命名的顶级simpleType
以限制内容(将其置于所有现有xs:element
声明之外,直接位于xs:schema
下)
<xs:simpleType name="lessThanFifty">
<xs:restriction base="xs:integer">
<xs:maxExclusive value="50" />
</xs:restriction>
</xs:simpleType>
然后让你的complexType
扩展它以添加属性
<xs:element name="shoesize">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="lessThanFifty">
<xs:attribute name="country">
<!-- you might want to pull this out into a top-level type if you
have other yes/no attributes elsewhere in the schema -->
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="yes" />
<xs:enumeration value="no" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
这将允许任何整数值达到并包括49,因此-500
是有效值。从限制xs:nonNegativeInteger
而不是xs:integer
开始可能更合适。