带值的XML示例:
<Type name="firstType">1</Type>
没有值的XML示例:
<Type name="secondType" />
XSD中的一个如何定义第二种元素?它有什么样的元素类型?
答案 0 :(得分:1)
您可以通过这种方式定义第一个元素(不带“name”属性):
<xs:element name="Type" type="xs:integer" />
如果您定义的第二个元素没有类型且没有子序列或选项
<xs:element name="Type" />
然后不允许使用子元素。这意味着该元素必须为空。
但是,如果元素具有特定的属性值,并且同时不为空,则它不能定义为空的元素,如果它具有其他属性值。
这是名称属性的完整示例:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="type0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:integer">
<xs:attribute name="name" use="required" fixed="firstType"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="type1">
<xs:complexType>
<xs:attribute name="name" use="required" fixed="secondType"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
但是我不建议在属性中定义类型,而是建议在元素中定义类型。这将允许不同的子类型。
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="type">
<xs:complexType>
<xs:choice>
<xs:element name="firstType" type="xs:integer"/>
<xs:element name="secondType"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 1 :(得分:1)
我认为以前的答案存在一些问题。
使用此示例
<?xml version="1.0" encoding="utf-8" ?>
<!--Created with Liquid Studio 2017 (https://www.liquid-technologies.com)-->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="ElementInt" type="xs:int" />
<xs:element name="ElementWithAnything" />
<xs:element name="myEmptyElm">
<xs:complexType />
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
元素' ElementInt '易于理解,其类型设置为xs:int,因此它必须包含int。
元素' ElementWithAnything '是有趣的地方,因为类型是 NOT 指定,类型默认为xs:anyType ,这允许任何东西,文本,元素,属性等等。
元素' myEmptyElm '基本上是说它的类型基于子xs:complexType。 xs:complexType以空为开头,因此除非您向其添加任何内容,否则生成的XML元素也必须为空。
声明一个空的元素
<xs:element name="myEmptyElm">
<xs:complexType />
</xs:element>
声明允许任何子文本,元素或属性的元素
<xs:element name="ElementWithAnything" />