在针对XSD验证XML时出错

Dr.*_*int 5 xml xsd

我有一个简单的XML文件,我想针对XSD进行验证.当我使用一些随机验证器进行验证时,我总是会收到以下错误:

找到以元素"实体"开头的无效内容.预期其中一个'{Entities}'.

这是XML:

<BusinessModel xmlns="http://schemas.testxyzxyz.de/xyz/BusinessModel" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Entities>
    <Entity Name="Customer">
        <Attribute Name="Forename" Type="String" />
        <Attribute Name="Surname" Type="String" />
        <Attribute Name="Birthday" Type="Date" />
    </Entity>
</Entities>
</BusinessModel>
Run Code Online (Sandbox Code Playgroud)

和XSD一样:

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        targetNamespace="http://schemas.testxyzxyz.de/xyz/BusinessModel"
        xmlns="http://schemas.testxyzxyz.de/xyz/BusinessModel">

<xsd:element name="BusinessModel" type="BusinessModelType" />

<xsd:complexType name="BusinessModelType">
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
        <xsd:element name="Entities" type="EntitiesType" />
    </xsd:choice>
</xsd:complexType>

<xsd:complexType name="EntitiesType">
    <xsd:sequence>
        <xsd:element name="Entity" type="EntityType" maxOccurs="unbounded" />
    </xsd:sequence>
</xsd:complexType>

<xsd:complexType name="AttributeType">
    <xsd:attribute name="Name" type="xsd:string" use="required" />
    <xsd:attribute name="Type" type="xsd:string" use="required" />
</xsd:complexType>

<xsd:complexType name="EntityType">
    <xsd:sequence>
        <xsd:element name="Attribute" type="AttributeType" maxOccurs="unbounded" minOccurs="1" />
    </xsd:sequence>
        <xsd:attribute name="Name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

从几小时开始寻找那个问题,我仍然没有发现错误.你能发现我正确的方向吗?;)

Eug*_*ota 3

元素声明架构组件的 XML 表示形式

{目标命名空间}

如果form存在且其实际值为qualified或者如果form不存在且祖先上的实际值为,则为父元素信息项的[属性]的实际值,如果不存在则为缺席,否则为缺席elementFormDefault<schema>qualifiedtargetNamespace<schema>

elemeFormDefault由于的默认值为unqualified,除非另有指定,否则局部元素必须是非限定的。

既然你设置了xmlns="http://schemas.testxyzxyz.de/xyz/BusinessModel",那么 就Entities成为合格的。修复方法是elementFormDefault="qualified"按照 @polishchuk 所写的进行设置。