如何为复杂元素编写 xsd

如何为复杂元素编写 xsd

我有一个像这样的 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。

  1. 将 XML 数据粘贴到 XML 数据框中。
  2. 点击生成 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:架构>

笔记

  1. 格式良好的 XML 输入文件应该有一个标签的结束标记<jobs>,因此应该在输入 XML 文件的末尾添加一个新行,如下所示:</jobs>

  2. 请注意,“description”、“location”和“salary”在架构中出现在“job type”之前,并且“salary”类型转换为“xs:string”。

  3. 如果希望“salary”类型显示为整数,请将输入更改为<salary>100,000</salary><salary>100000</salary>方法是删除数字中的逗号100,000。这将更改架构中的“salary”类型行,如下所示:

    <xs:元素类型="xs:int" 名称="薪水"/>

相关内容