当前位置: 首页 > 知识库问答 >
问题:

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

夏青青
2023-03-14

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

客户可以发出采购订单。采购订单至少包括一个订单位置(产品名称、数量和价格是必需的;注释和装运日期是可选的)。

采购订单有日期(订单日期)和可选注释。客户可以指定不同的地址(计费和发货)。只需要送货地址。

<?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>

那么同一个元素,这里的注释,是否多次出现?现在我有min和maxOccurs用于注释,但顺序是这样的,所以可能是错误的。

你可能还看到了哪些错误?或者我能让它变得更简单?点至少一个订单位置让我在complexType之前创建一个元素,以告知minOccurs值为1。

共有1个答案

贺俊楚
2023-03-14

在序列中的元素上有minOccursmaxOccurs是可以的。

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

>

  • xmlns:xs=”http://www.w3.org/2001/XMLSchema-instance“应该是xmlns:xs=”http://www.w3.org/2001/XMLSchema“。(修复了标题消息错误,但之后将有更多问题需要修复…)

    order position元素的声明不能同时具有type属性和xs:complexType子元素。用一个或另一个。

    其他的仍然存在(例如,满足您的基本要求),但这里有一个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是否格式良好且有效。

  •  类似资料: