我有一个简单的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)
从几小时开始寻找那个问题,我仍然没有发现错误.你能发现我正确的方向吗?;)
{目标命名空间}
如果
form
存在且其实际值为,qualified
或者如果form
不存在且祖先上的实际值为,则为父元素信息项的[属性]的实际值,如果不存在则为缺席,否则为缺席。elementFormDefault
<schema>
qualified
targetNamespace
<schema>
elemeFormDefault
由于的默认值为unqualified
,除非另有指定,否则局部元素必须是非限定的。
既然你设置了xmlns="http://schemas.testxyzxyz.de/xyz/BusinessModel"
,那么 就Entities
成为合格的。修复方法是elementFormDefault="qualified"
按照 @polishchuk 所写的进行设置。
归档时间: |
|
查看次数: |
1599 次 |
最近记录: |