如何允许具有字符串内容的元素上的属性?

How to allow an attribute on an element with string content?

我正在尝试为以下 XML 写一个 XSD:

  <users>
    <user id='u1'>A</user>
    <user id='u2'>B</user>
    <user id='u3'>C</user>
  </users>

这是我目前的情况:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <xsd:element name="users">
          <xsd:complexType>
            <xsd:sequence>
              <xsd:element name="user" maxOccurs="unbounded" type="xsd:string">
                <xsd:attribute name="id" type="xsd:string"/>
              </xsd:element>
            </xsd:sequence>
          </xsd:complexType>
        </xsd:element>
</xsd:schema>

但是 returns 错误:

Element '{http://www.w3.org/2001/XMLSchema}element': The content is not valid. Expected is (annotation?, ((simpleType | complexType)?, (unique | key | keyref)*))

id属性是用户的id。 知道我该如何解决这个问题吗?

这里是如何使用 simpleContent (xsd:string) 和 XSD 中的属性定义元素:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="users">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="user" maxOccurs="unbounded">
          <xsd:complexType>
            <xsd:simpleContent>
              <xsd:extension base="xsd:string">
                <xsd:attribute name="id" type="xsd:string"/>
              </xsd:extension>
            </xsd:simpleContent>
          </xsd:complexType>
        </xsd:element>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

(您的错误与 maxOccurs 不受限制无关。它与您的 user 元素的内容模型有关。)