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。
可以在序列中的元素上使用 minOccurs
和 maxOccurs
。
但是,以下是您必须解决的一些问题:
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
应该是 xmlns:xs="http://www.w3.org/2001/XMLSchema"
。 (修复了标题消息错误,但之后会有更多需要修复的...)
<xs:element name="purchase-order">
不能有 xs:element
child。使用 xs:complexType
child 和 xs:sequence
grandchild.
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。
我有一个或多或少简单的任务来构建 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。
可以在序列中的元素上使用 minOccurs
和 maxOccurs
。
但是,以下是您必须解决的一些问题:
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
应该是xmlns:xs="http://www.w3.org/2001/XMLSchema"
。 (修复了标题消息错误,但之后会有更多需要修复的...)<xs:element name="purchase-order">
不能有xs:element
child。使用xs:complexType
child 和xs:sequence
grandchild.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。