Xml 在一个元素中使用simpletype和复杂类型组合xsd
我想在onece为下面的元素创建xsd。 这样做有什么想法吗Xml 在一个元素中使用simpletype和复杂类型组合xsd,xml,xsd,Xml,Xsd,我想在onece为下面的元素创建xsd。 这样做有什么想法吗 <database> <user>user1</user> <password>dbpassword</password> </database> <database>"user1/password"</database> 用户1 数据库密码 “用户1/密码” 所以elment可以有复杂类型和简单字符串类型 如何为
<database>
<user>user1</user>
<password>dbpassword</password>
</database>
<database>"user1/password"</database>
用户1
数据库密码
“用户1/密码”
所以elment可以有复杂类型和简单字符串类型
如何为此编写xsd?您可以定义
complexType
,并将mixed
属性设置为true。从:
要使字符数据出现在“字母”的子元素之间,必须将混合属性设置为“true”
和
标记是可选的,这意味着
标记只能包含字符串并且是有效的
您可能应该只使用一种用户名和密码样式。使用简单文本或将它们放在单独的标记中,但不能同时使用两者。将两者混合在一起可能会导致一些不必要的行为。您可以使用混合内容并使元素节点成为可选的,但这可能会允许许多您不想允许的事情 在XSD1.1中,您可以将其定义为混合内容,并使用断言进一步约束可能出现的内容。但这也不是一个特别好的解决方案,因为不能简单地将约束定义为“complex-type-1或simple-type-2”
我建议不要这样做。例如,如果简单类型是一种传统格式,并且您希望移动到更结构化的元素形式,我将使用不同的元素名称,或者给它一个attribute format=“v2”,然后使用XSD 1.1条件类型分配根据属性值分配类型。谢谢您的回复,但由于向后兼容性问题:(我不能强制更改为新格式。。。
<xs:element name="database" type="dbType"/>
<xs:complexType name="dbType" mixed="true">
<xs:sequence>
<xs:element name="user" type="xs:string" minOccurs="0"/>
<xs:element name="password" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>