Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
根据XSD验证XML时出错_Xml_Xsd - Fatal编程技术网

根据XSD验证XML时出错

根据XSD验证XML时出错,xml,xsd,Xml,Xsd,我得到了一个简单的XML文件,我想用XSD验证它。 当我使用一些随机验证器进行验证时,总是会出现以下错误: 发现以元素“Entities”开头的无效内容。应为“{Entities}”之一 以下是XML: <BusinessModel xmlns="http://schemas.testxyzxyz.de/xyz/BusinessModel" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Entities>

我得到了一个简单的XML文件,我想用XSD验证它。 当我使用一些随机验证器进行验证时,总是会出现以下错误:

发现以元素“Entities”开头的无效内容。应为“{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>

以及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>

几个小时以来一直在寻找这个问题,但我仍然没有发现任何错误。你能给我指出正确的方向吗

尝试以下模式:

<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="http://schemas.testxyzxyz.de/xyz/BusinessModel" xmlns:b="http://schemas.testxyzxyz.de/xyz/BusinessModel">
  <xsd:element name="BusinessModel" type="b:BusinessModelType" />
  <xsd:complexType name="BusinessModelType">
    <xsd:choice minOccurs="0" maxOccurs="unbounded">
      <xsd:element name="Entities" type="b:EntitiesType" />
    </xsd:choice>
  </xsd:complexType>
  <xsd:complexType name="EntitiesType">
    <xsd:sequence>
      <xsd:element name="Entity" type="b: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="b:AttributeType" maxOccurs="unbounded" minOccurs="1" />
    </xsd:sequence>
    <xsd:attribute name="Name" type="xsd:string" use="required" />
  </xsd:complexType>
</xsd:schema>

{target namespace}

如果存在
form
,且其实际值为
qualified
,或者如果不存在
form
,且
祖先上
elementFormDefault
的实际值为
qualified
,则
targetNamespace
[属性]父元素信息项的,如果没有,则不存在,否则不存在

由于
elemeFormDefault
的默认值为
unqualified
,除非另有规定,否则本地元素必须为unqualified

因为您设置了
xmlns=”http://schemas.testxyzxyz.de/xyz/BusinessModel“
实体
合格。
修复方法是按照@polishchuk所写的那样设置
elementFormDefault=“qualified”

谢谢,解决了这个问题:)