Xsd XML模式问题

Xsd XML模式问题,xsd,Xsd,是否可以定义XML模式(XSD)来正确描述以下文档 <root> <str name="status">success</str> <str name="message">Your request has been processed successfuly.</str> </root> 成功 您的请求已成功处理。 问题可能是标记具有属性(名称)和字符串值。 如果有人能为这段XML提供一个XML模式,我

是否可以定义XML模式(XSD)来正确描述以下文档

<root>
    <str name="status">success</str>
    <str name="message">Your request has been processed successfuly.</str>
</root>

成功
您的请求已成功处理。
问题可能是
标记具有属性(名称)和字符串值。 如果有人能为这段XML提供一个XML模式,我将不胜感激,因为我有点被困在这一点上。下面显示了我迄今为止的最佳尝试,但同时指出
元素在此上下文中不能具有类型(例如xsd:string)

  <xs:element name="object">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="str" minOccurs="2" maxOccurs="2">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="productName" type="xs:string"/>
          </xs:sequence>
          <xs:attribute name="name" type="xs:string" use="required"/>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  </xs:element>

您的约束并不完全清楚,因此许多模式将根据您希望验证的松散/紧凑程度来验证XML。本例显示了一个模式,该模式要求元素中正好有两个元素,并且它们必须具有值为“status”或“message”的“name”属性



当然,这将允许两个元素都将name属性设置为“message”,或者首先设置为“message”,然后设置为status。我认为模式不能定义一个包含两个同名但类型不同的元素的序列,如果需要验证以确保第一个元素始终包含“status”,第二个元素始终包含“message”,则需要使用这两个元素。

非常感谢。这确实为我指明了正确的方向。str元素的顺序并不重要。但是,我想确保其中只有一个具有“status”属性,而只有一个具有“message”属性。你认为这可能吗?我不是100%,但我认为这是不可能的。XSD不能将同一序列中具有相同名称的元素定义为不同类型。如果可以更改XML,则可能应该使用不同的元素名称,而不是。相关问题:
<?xml version="1.0" encoding="utf-8"?>
<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="str" type="StrType" minOccurs="2" maxOccurs="2"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="StrType">
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="name" type="StrAttribute" use="required" />
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:simpleType name="StrAttribute">
    <xs:restriction base="xs:string">
      <xs:enumeration value="status"/>
      <xs:enumeration value="message"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>