我有一个像这样的 xml
<jobs>
<job job_type="full time">
<title department="distribution">Manager</title>
<description>Managing the distribution</description>
<location>Delhi</location>
<salary>100,000</salary>
</job>
我为此编写了 xsd,如下所示
<xs:scema>
<xs:element name="jobs">
<xs:complexType>
<xs:sequence>
<xs:element name="job">
<xs:complexType>
<xs:attribute name="job_type" type="xs:string/>
</xs:complexType>
<xs:complexType>
<xs:sequence>
<xs:element name="title">
<xs:complexType>
<xs:attribute name="department" type="xs:string/>
</xs:complexType>
</xs:element>
<xs:element name="description" type="xs:string"/>
<xs:element name="location" type="xs:string"/>
<xs:element name="salary" type="xs:integer"/>
</xs:sequence>
</xs:complexType>
</xs:sequence>
</xs:complexType>
我可以知道这是否正确或错误吗?编写具有属性和其他子元素的复杂元素的正确方法是什么。
答案1
以下是将 xml 示例转换为 xsd 的结果XSD/XML 模式生成器网页。为了将xml转换为xsd。
- 将 XML 数据粘贴到 XML 数据框中。
- 点击生成 XSD按钮。
<xs:架构> <xs:element name="职位"> <xs:复杂类型> <xs:序列> <xs:element name="作业"> <xs:复杂类型> <xs:序列> <xs:element name="标题"> <xs:复杂类型> <xs:简单内容> <xs:扩展库="xs:字符串"> <xs:attribute 类型="xs:string" name="部门"/> </xs:扩展> </xs:简单内容> </xs:复杂类型> </xs:元素> <xs:元素类型="xs:字符串" 名称="描述"/> <xs:元素类型="xs:字符串" 名称="位置"/> <xs:元素类型="xs:string" 名称="薪水"/> </xs:序列> <xs:属性类型="xs:字符串" 名称="job_type"/> </xs:复杂类型> </xs:元素> </xs:序列> </xs:复杂类型> </xs:元素> </xs:架构>
笔记
格式良好的 XML 输入文件应该有一个标签的结束标记
<jobs>
,因此应该在输入 XML 文件的末尾添加一个新行,如下所示:</jobs>
请注意,“description”、“location”和“salary”在架构中出现在“job type”之前,并且“salary”类型转换为“xs:string”。
如果希望“salary”类型显示为整数,请将输入更改为
<salary>100,000</salary>
,<salary>100000</salary>
方法是删除数字中的逗号100,000
。这将更改架构中的“salary”类型行,如下所示:<xs:元素类型="xs:int" 名称="薪水"/>