-1

这是我的 XML 代码- 这部分格式正确,在进行验证时不包含任何错误。

<Employees>
<Employee>
 <Name>
    <FirstName>Tom</FirstName>
    <LastName>Sawyer</LastName>
 </Name>
 <Salary>10000</Salary>
 <Biography>
    Worked at the <Company>MCB Ltd</Company>
    as <JobTitle>Cashier</JobTitle>
 </Biography>
</Employee>

<Employee>
 <Name>
    <FirstName>John</FirstName>
    <LastName>Herold</LastName>
 </Name>
 <Wage>9500.25</Wage>
 <Biography>
    Worked at the <Company>University of Mauritius</Company>
    as <JobTitle>Software Engineer</JobTitle>
 </Biography>
</Employee>
</Employees>

这是我的 XSD 代码:问题就在这里。我将其视为错误“元素”:内容无效。预期为(注释?,((simpleType | complexType)?,(唯一| key | keyref)*))。

我是使用 xml 和 xsd 的初学者。问题如下:

使用以下架构命名空间:

  1. http://www.w3.org/2001/XMLSchema-instance
  2. 最小和最大员工人数:
  • 最低:1
  • 最大值:无界
  1. 薪水在 10,000 到 90,000 之间(含)。
  2. 将以下元素的类型声明为全局类型:
  • - 将此 complexType 的名称写为 name

  • - 将此 simpleType 的名称写为薪水

              <xs:element name="Employees">
              <xs:sequence> 
              <xs:element name="Employee" type="xs:String" minOccurs="1" maxOccurs="unbounded">
                  <xs:element name="Name" type="xs:String">
                  <xs:complexType name="name" type="xs:String">
                      <xs:element name="FirstName">
                          <xs:attribute name="Tom" type="xs:String"/>
                      </xs:element>
    
                      <xs:element name="LastName">
                          <xs:attribute name="Sawyer" type="xs:String"/>
                      </xs:element>
                  </xs:complexType>
                  </xs:element>
    
                  <xs:simpleType name="salary" type="xs:integer">
                      <xs:attribute name="10000" type="xs:integer" minInclusive="10000" maxInclusive="90000"/>
                  </xs:simpleType>
    
                  <xs:element name="Biography">
                      <xs:complexType mixed="true">
                          <xs:sequence>
                              <xs:element name="Company">
                                  <xs:attribute name="MCB Ltd" type="xs:String"/>
                              </xs:element>
    
                              <xs:element name="JobTitle">
                                  <xs:attribute name="Cashier" type="xs:String"/>
                              </xs:element>
                          </xs:sequence>
                      </xs:complexType>
                  </xs:element>
              </xs:element>
    
              <xs:element name="Employee" type="xs:String" minOccurs="1" maxOccurs="unbounded">
                  <xs:element name="Name" type="xs:String">
                  <xs:complexType name="name" type="xs:String">
                      <xs:element name="FirstName">
                          <xs:attribute name="John" type="xs:String"/>
                      </xs:element>
    
                      <xs:element name="LastName">
                          <xs:attribute name="Herold" type="xs:String"/>
                      </xs:element>
                  </xs:complexType>
                  </xs:element>
    
                  <xs:simpleType name="wage" type="integer">
                      <xs:attribute name="9500.25" type="xs:integer" />
                  </xs:simpleType>
    
                  <xs:element name="Biography">
                      <xs:complexType mixed="true">
                          <xs:sequence>
                              <xs:element name="Company">
                                  <xs:attribute name="University of Mauritius" type="xs:String"/>
                              </xs:element>
    
                              <xs:element name="JobTitle">
                                  <xs:attribute name="Software Engineer" type="xs:String"/>
                              </xs:element>
                          </xs:sequence>
                      </xs:complexType>
                  </xs:element>
              </xs:element>
    
          </xs:sequence>
          </xs:element>
          </xs:schema>
    
4

2 回答 2

1

这里有很多问题,例如:

  • 有一个 xs:element 声明 name="Name" 有一个type属性和一个包含的xs:complexType声明。

  • 带有name属性(例如name="wage")的 xs:simpleType 声明只能作为 的子级出现xs:schema

  • University of Mauritius不是有效的属性名称

  • 9500.25不是有效的类型名称

这完全是错误的,以至于人们不得不问一个元问题:你是如何完成学习这门语言的任务的?因为在我看来,您好像阅读了一些示例,并试图通过阅读示例来猜测该语言是如何工作的,但这是行不通的。我在学习 XSD 时发现了两件有用的事情:(a) 阅读一本好书而不是主题(例如 Priscilla Walmsley 的书),(b) 尝试使用从实例生成模式的工具(例如 Oxygen 中的工具)文件。

于 2021-04-04T17:47:25.323 回答
0

您不能直接将一个<xs:element/>元素嵌套在另一个<xs:element/>. 它必须是使用 contains 之类的类型规范的<xs:complexType/>一部分<xs:sequence/>

于 2021-04-04T09:52:10.340 回答