Xml 使用schemaLocation从主xsd文件中引用辅助xsd文件

Xml 使用schemaLocation从主xsd文件中引用辅助xsd文件,xml,xsd,Xml,Xsd,我正在开发一个需要解释响应xml的应用程序。 我使用的是xsd文件 我有subscription.xsd(如下所列),它引用了s.xsd文件。这两个文件位于应用程序中的同一文件夹下(例如资源) 但问题是,如果尝试使用简单路径,例如schemaLocation=“s.xsd”,我会遇到以下错误:无法读取包含的模式文档“s.xsd”。我尝试了几种组合,但什么也解决不了问题 是否有一种方法可以使此引用成为通用的引用,以便在linux平台上部署时可以使用它 <?xml version="1.0"

我正在开发一个需要解释响应xml的应用程序。 我使用的是xsd文件

我有subscription.xsd(如下所列),它引用了s.xsd文件。这两个文件位于应用程序中的同一文件夹下(例如资源)

但问题是,如果尝试使用简单路径,例如schemaLocation=“s.xsd”,我会遇到以下错误:无法读取包含的模式文档“s.xsd”。我尝试了几种组合,但什么也解决不了问题

是否有一种方法可以使此引用成为通用的引用,以便在linux平台上部署时可以使用它

<?xml version="1.0" encoding="UTF-8"?>
  <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"  targetNamespace="http://www.w3.org/2005/Atom" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:s="http://www.somename.com/subscription">
    <xs:import namespace="http://www.somename.com/subs/subscription" schemaLocation="file:/C:/MyApp/schma_defs/s.xsd"/>
    <xs:element name="feed">
      <xs:complexType>
        <xs:sequence>
          <xs:element ref="atom:id"/>
          <xs:element ref="atom:title"/>
          <xs:element ref="atom:author"/>
        </xs:sequence>
     </xs:complexType>
    </xs:element>
  </xs:schema>

跨平台使模式定位一致的方法:

  • 使用与引用XSD相同的目录:
    • schemaLocation=“s.xsd”
  • 使用相对于引用XSD的目录:
    • schemaLocation=“../xsds/s.xsd”
  • 使用可相互访问的公共网络位置,在该位置可以放置XSD:
    • schemaLocation=”http://www.somename.com/subs/subscription/s.xsd“

使架构定位跨平台一致的方法:

  • 使用与引用XSD相同的目录:
    • schemaLocation=“s.xsd”
  • 使用相对于引用XSD的目录:
    • schemaLocation=“../xsds/s.xsd”
  • 使用可相互访问的公共网络位置,在该位置可以放置XSD:
    • schemaLocation=”http://www.somename.com/subs/subscription/s.xsd“