使用schemaLocation从main xsd文件引用辅助xsd文件

时间:2013-12-06 23:33:41

标签: xml xsd

我正在开发一个应用程序,我需要解释响应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>

1 个答案:

答案 0 :(得分:1)

使schemaLocation跨平台保持一致的方法:

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