s4s-elt-schema-ns:元素 'schema' 的命名空间必须来自架构命名空间,'http://www.w3.org/2001/XMLSchema'

s4s-elt-schema-ns: The namespace of element 'schema' must be from the schema namespace, 'http://www.w3.org/2001/XMLSchema'

我有一个或多或少简单的任务来构建 XSD 模式,但我不确定我的想法是否正确。特别是对于元素 comment.

客户可以下采购订单。一张采购订单至少包括一个订单位置(产品名称、数量和价格为必填项;评论和发货日期为 可选)。

采购订单有一个 日期(订单日期)和一个可选的 评论。 客户可以指定不同的 地址 (计费和 运输)。只需要送货地址。

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema-instance">
    <xs:element name="purchase-order">
        <xs:element name="order-position" type="order-position-type" minOccurs="1">
            <xs:complexType name="order-position-type">
                <xs:sequence>
                    <xs:element name="product-name" type="xs:string"></xs:element>
                    <xs:element name="quantity" type="xs:integer"></xs:element>
                    <xs:element name="price" type="xs:decimal"></xs:element>
                    <xs:element name="comment" type="xs:string" minOccurs="0" maxOccurs="2"></xs:element>
                    <xs:element name="shipping-date" type="xs:date" minOccurs="0"></xs:element>
                </xs:sequence>
            </xs:complexType>
        </xs:element>
        <xs:element name="order-date" type="xs:date" minOccurs="0"></xs:element>
        <xs:element name="billing-address" type="xs:string"></xs:element>
        <xs:element name="shipping-address" type="xs:string" minOccurs="1"></xs:element>
    </xs:element>
</xs:schema>

那么这里 comment 中的同一个元素会出现多次吗?现在我有 comment 的 min 和 maxOccurs,但顺序可能是错误的。

您可能还会在其他什么地方看到错误?或者我可以让它更容易吗? at least one order position 让我在 complexType 之前创建一个元素来告诉 minOccurs 值为 1。

可以在序列中的元素上使用 minOccursmaxOccurs

但是,以下是您必须解决的一些问题:

  1. xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" 应该是 xmlns:xs="http://www.w3.org/2001/XMLSchema"。 (修复了标题消息错误,但之后会有更多需要修复的...)

  2. <xs:element name="purchase-order"> 不能有 xs:element child。使用 xs:complexType child 和 xs:sequence grandchild.

  3. order-position 元素的声明不能同时具有 type 属性和 xs:complexType child。使用其中之一。

其他的仍然存在(例如,满足您的基数要求),但这里有一个 XSD 修复了上述语法问题,至少可以帮助您摆脱困境:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="purchase-order">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="order-position" type="order-position-type" minOccurs="1"/>
        <xs:element name="order-date" type="xs:date" minOccurs="0"/>
        <xs:element name="billing-address" type="xs:string"/>
        <xs:element name="shipping-address" type="xs:string" minOccurs="1"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="order-position-type">
    <xs:sequence>
      <xs:element name="product-name" type="xs:string"/>
      <xs:element name="quantity" type="xs:integer"/>
      <xs:element name="price" type="xs:decimal"/>
      <xs:element name="comment" type="xs:string" minOccurs="0" maxOccurs="2"/>
      <xs:element name="shipping-date" type="xs:date" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema>

您需要使用 XML 编辑器或验证解析器来检查您的 XSD 是否为 well-formed and valid