在xml中引用xsd文件

在xml中引用xsd文件,xml,xsd,Xml,Xsd,我不熟悉xml语言,我有一个xml文件,我为那个文件创建了xsd模式,但我的问题是如何在xml文件中引用这个模式。我的xml模式如下所示 <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wmh="http://www.wmhelp.com/2003/eGenerator" elementFormDefault=

我不熟悉xml语言,我有一个xml文件,我为那个文件创建了xsd模式,但我的问题是如何在xml文件中引用这个模式。我的xml模式如下所示

<?xml version="1.0" encoding="utf-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:wmh="http://www.wmhelp.com/2003/eGenerator"
    elementFormDefault="qualified"
    targetNamespace="http://axis.com/service"
    xmlns="http://axis.com/service"
    version="1.0">

  <xs:element name="SWService" type="SWServiceType"/>
  <xs:element name="HWService" type="HWServiceType"/>


 <xs:complexType name="SWServiceType">
<xs:sequence>
  <xs:element name="Service" type="ServiceType" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
  </xs:complexType>

 <xs:complexType name="ServiceType">
 <xs:complexContent>
 <xs:extension base="IdType">
  <xs:sequence>
    <xs:element name="Description" type="xs:string" maxOccurs="1" minOccurs="0"/>
    <xs:element name="ServiceCustomers" type="ServiceCustomersType" maxOccurs="1" 
 minOccurs="0"/>
    <xs:element name="ServiceSuppliers" type="ServiceSuppliersType" maxOccurs="1" 
 minOccurs="0"/>
  </xs:sequence>
  <xs:attribute name="Name" type="xs:string" use="required"/>
  </xs:extension>
  </xs:complexContent>
   </xs:complexType>

    <xs:complexType name="HWServiceType">
  <xs:sequence>
    <xs:element name="element" type="elementGroupType" maxOccurs="1" minOccurs="0"/>
  </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ServiceCustomersType">
  <xs:sequence>
    <xs:element name="SoftWare" type="SoftWareType" maxOccurs="unbounded" 
  minOccurs="0"/>
  </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ServiceSuppliersType">
  <xs:sequence>
    <xs:element name="SoftWare" type="SoftWareType" maxOccurs="unbounded" 
 minOccurs="0"/>
    <xs:element name="HardWare" type="HardWareType" maxOccurs="unbounded" 
  minOccurs="0"/>
  </xs:sequence>
 </xs:complexType>

 <xs:complexType name="SoftWareType">
 <xs:complexContent>
 <xs:extension base="PathType">
  <xs:attribute name="Service" type="xs:string" use="required"/>
    </xs:extension>
     </xs:complexContent>
 </xs:complexType>

 <xs:complexType name="HardWareType">
 <xs:complexContent>
 <xs:extension base="PathType">
  <xs:attribute name="Type" type="xs:string" use="required"/>
  <xs:attribute name="Nr" type="xs:string" use="required"/>
  <xs:attribute name="Service" type="xs:string" use="required"/>
    </xs:extension>
     </xs:complexContent>
 </xs:complexType>

<xs:complexType name="PathType">
  <xs:attribute name="Path" type="xs:string" use="required"/>
</xs:complexType>


   <xs:complexType name="elementGroupType">
 <xs:sequence>
       <xs:element name="element" type="elementType" maxOccurs="unbounded" 
 minOccurs="1"/>
  </xs:sequence>
 </xs:complexType>


 <xs:complexType name="elementType">
  <xs:sequence>
    <xs:element name="LM" type="LMType2" maxOccurs="1" minOccurs="1"/>
    <xs:element name="Service" type="ServiceType" maxOccurs="unbounded" minOccurs="0"/>
  </xs:sequence>
  <xs:attribute name="Type" type="xs:string" use="required"/>
  <xs:attribute name="Nr" type="xs:string" use="required"/>
  <xs:attribute name="Name" type="xs:string" use="required"/>
 </xs:complexType>


  <xs:complexType name="LMType2">
  <xs:sequence>
    <xs:element name="LowerMode" type="LowerModeType2" maxOccurs="unbounded" 
 minOccurs="0"/>
  </xs:sequence>
 </xs:complexType>

 <xs:complexType name="LowerModeType2">
 <xs:complexContent>
  <xs:extension base="IdType">
    <xs:attribute name="Probability" type="xs:double" use="required"/>
  </xs:extension>
  </xs:complexContent>
  </xs:complexType>


 <xs:complexType name="IdType">
  <xs:attribute name="Id" type="xs:string" use="required"/>
 </xs:complexType>

  </xs:schema>
  No DTD of the document found 
<?xml version="1.0" encoding="UTF-8"?>
<Service xsi:schemaLocation=""http://axis.com/service"       
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://axis.com/service"        
 Version="1.0">
--------Xml data-------
 </Service>
我试过这样做

<?xml version="1.0" encoding="utf-8"?>
 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:wmh="http://www.wmhelp.com/2003/eGenerator"
    elementFormDefault="qualified"
    targetNamespace="http://axis.com/service"
    xmlns="http://axis.com/service"
    version="1.0">

  <xs:element name="SWService" type="SWServiceType"/>
  <xs:element name="HWService" type="HWServiceType"/>


 <xs:complexType name="SWServiceType">
<xs:sequence>
  <xs:element name="Service" type="ServiceType" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
  </xs:complexType>

 <xs:complexType name="ServiceType">
 <xs:complexContent>
 <xs:extension base="IdType">
  <xs:sequence>
    <xs:element name="Description" type="xs:string" maxOccurs="1" minOccurs="0"/>
    <xs:element name="ServiceCustomers" type="ServiceCustomersType" maxOccurs="1" 
 minOccurs="0"/>
    <xs:element name="ServiceSuppliers" type="ServiceSuppliersType" maxOccurs="1" 
 minOccurs="0"/>
  </xs:sequence>
  <xs:attribute name="Name" type="xs:string" use="required"/>
  </xs:extension>
  </xs:complexContent>
   </xs:complexType>

    <xs:complexType name="HWServiceType">
  <xs:sequence>
    <xs:element name="element" type="elementGroupType" maxOccurs="1" minOccurs="0"/>
  </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ServiceCustomersType">
  <xs:sequence>
    <xs:element name="SoftWare" type="SoftWareType" maxOccurs="unbounded" 
  minOccurs="0"/>
  </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ServiceSuppliersType">
  <xs:sequence>
    <xs:element name="SoftWare" type="SoftWareType" maxOccurs="unbounded" 
 minOccurs="0"/>
    <xs:element name="HardWare" type="HardWareType" maxOccurs="unbounded" 
  minOccurs="0"/>
  </xs:sequence>
 </xs:complexType>

 <xs:complexType name="SoftWareType">
 <xs:complexContent>
 <xs:extension base="PathType">
  <xs:attribute name="Service" type="xs:string" use="required"/>
    </xs:extension>
     </xs:complexContent>
 </xs:complexType>

 <xs:complexType name="HardWareType">
 <xs:complexContent>
 <xs:extension base="PathType">
  <xs:attribute name="Type" type="xs:string" use="required"/>
  <xs:attribute name="Nr" type="xs:string" use="required"/>
  <xs:attribute name="Service" type="xs:string" use="required"/>
    </xs:extension>
     </xs:complexContent>
 </xs:complexType>

<xs:complexType name="PathType">
  <xs:attribute name="Path" type="xs:string" use="required"/>
</xs:complexType>


   <xs:complexType name="elementGroupType">
 <xs:sequence>
       <xs:element name="element" type="elementType" maxOccurs="unbounded" 
 minOccurs="1"/>
  </xs:sequence>
 </xs:complexType>


 <xs:complexType name="elementType">
  <xs:sequence>
    <xs:element name="LM" type="LMType2" maxOccurs="1" minOccurs="1"/>
    <xs:element name="Service" type="ServiceType" maxOccurs="unbounded" minOccurs="0"/>
  </xs:sequence>
  <xs:attribute name="Type" type="xs:string" use="required"/>
  <xs:attribute name="Nr" type="xs:string" use="required"/>
  <xs:attribute name="Name" type="xs:string" use="required"/>
 </xs:complexType>


  <xs:complexType name="LMType2">
  <xs:sequence>
    <xs:element name="LowerMode" type="LowerModeType2" maxOccurs="unbounded" 
 minOccurs="0"/>
  </xs:sequence>
 </xs:complexType>

 <xs:complexType name="LowerModeType2">
 <xs:complexContent>
  <xs:extension base="IdType">
    <xs:attribute name="Probability" type="xs:double" use="required"/>
  </xs:extension>
  </xs:complexContent>
  </xs:complexType>


 <xs:complexType name="IdType">
  <xs:attribute name="Id" type="xs:string" use="required"/>
 </xs:complexType>

  </xs:schema>
  No DTD of the document found 
<?xml version="1.0" encoding="UTF-8"?>
<Service xsi:schemaLocation=""http://axis.com/service"       
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://axis.com/service"        
 Version="1.0">
--------Xml data-------
 </Service>


schemaLocation的使用是完全可选的,并且Version属性在实例中不正确(除非您在模式中定义了名为Version的属性)

下面的例子

<Service xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://axis.com/service">
any string
</Service>

任何字符串
根据架构验证fine:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:wmh="http://www.wmhelp.com/2003/eGenerator"
    elementFormDefault="qualified"
    targetNamespace="http://axis.com/service"
    xmlns="http://axis.com/service"
    version="1.0">
  <xs:element name="Service" type="xs:string"/>
</xs:schema>

我所做的只是用字符串替换AxisServiceType类型


为了确定故障的确切原因,我需要查看整个模式和实例文档

+1:这是我一段时间以来看到的最好的第一篇帖子之一!您能描述一下您是如何验证XML的吗?您是否使用了一些外部程序或库?@bbaja42我正在使用XMLPAD进行验证。感谢您的回复,我正在为不同的xml文件格式编写一个xsd,SWService、HWService、MODULESPECITION与不同的xml文件相关,SWService xml文件xsd在SWServiceType.like wise下被三个不同的xml文件引用。我编辑了我的帖子,可以看看我编辑的帖子。我需要以三种不同的xml文件格式引用这个xsd。你能这样帮助我吗?如果我引用这个xsd时没有验证它的名称空间,但名称空间有错误。很抱歉,为了帮助你构建一个实例XML文档,你必须向我提供整个xsd架构。你能看看我的xsd吗,我提供了完整的xsd模式。谢谢-您可以发布三种不同的xml文件格式吗?然后,我可以帮助您了解,当您从模式中包含名称空间时,为什么这些名称空间没有被验证。然后,我将更新我的原始答案,以包括这一点。