我无法找到如何为元素shop-offer
添加必需属性。我试图放置
<xs:attribute name="id" type="xs:integer" use="required"/>
在架构根目录中以及元素的<xs:complexType>
中,但它不起作用。我总是收到这里不允许的错误。
那我怎么能这样做呢?
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shop-offer">
<xs:complexType mixed="true">
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="tool">
<xs:complexType>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="widget">
<xs:complexType>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
答案 0 :(得分:0)
您的xs:attribute
声明没有问题,但他们的展示位置需要在id
和tool
元素上显示widget
个属性。
如果您还希望id
根元素上需要shop-offer
,则您必须在xs:complexType
内放置另一个xs:sequence
(shop-offer
之后) <?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shop-offer">
<xs:complexType mixed="true">
<xs:sequence>
<xs:choice maxOccurs="unbounded">
<xs:element name="tool">
<xs:complexType>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="widget">
<xs:complexType>
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:sequence>
<!-- This @id is for the shop-offer root element -->
<xs:attribute name="id" type="xs:integer" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
:
此XSD,
<shop-offer id="1">
<tool id="2"/>
</shop-offer>
将成功验证此XML
mixed="true"
根据要求。
注意:您确定要<shop-offer id="1">
Text here.
<tool id="2"/>
And more text here.
</shop-offer>
,这将允许此XML有效,
function [z] = testCat(x,y)
z=strcat(x,y);
end
也许并不理想。