2014-01-30 4 views
0

Мы новые пользователи для xsd, и мы пытаемся проверить файл xsd, который должен импортировать другой. Мы пытаемся сделать импорт из companyInfos.xsd в jobrecord.xsd. Вот два xsd-файла, с которыми мы имеем дело. employmentrecord.xsdОшибка проверки xsd при импорте

<?xml version="1.0" encoding="UTF-8"?> 

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:ci="companyInfos.xsd" 
    targetNamespace="er" 
    elementFormDefault="qualified"> 

    <xsd:import namespace="ci" schemaLocation="companyInfos.xsd" /> 
    <xsd:element name="employment">  
     <xsd:complexType> 
      <xsd:sequence> 
       <xsd:element type="ci:company"/> 
       <xsd:element name="position" type="xsd:string"/> 
       <xsd:element name="duration" type="xsd:string"/> 
       <xsd:element name="dateStart" type="xsd:date"/> 
       <xsd:element name="current" type="xsd:booolean"/> 
      </xsd:sequence> 
     </xsd:complexType> 
    </xsd:element> 
</xsd:schema> 

companyInfos.xsd

<?xml version="1.0" encoding="UTF-8"?> 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="ci" elementFormDefault="qualified"> 
    <xsd:element name="company"> 
     <xsd:complexType> 
      <xsd:sequence> 
       <xsd:element name="companyName" type="xsd:string"/> 
       <xsd:element name="foundationDate" type="xsd:date"/> 
       <xsd:element name="field" type="xsd:string"/> 
       <xsd:element name="employeeCount" type="xsd:integer"/> 
       <xsd:element name="logo" type="xsd:anyURI"/> 
       <xsd:element name="description" type="xsd:string"/> 
       <xsd:element name="httpLink" type="xsd:anyURI"/> 
      </xsd:sequence> 
     </xsd:complexType> 
    </xsd:element>    
</xsd:schema> 

Мы получили следующее сообщение об ошибке в терминале при попытке действительность: org.xml.sax.SAXParseException; systemId: файл: ///home/jiby/Dropbox/ID2208_shared%20with%20JB/SampleParser/ID2208_hw1/xml/employmentrecord.xsd; Было обнаружено, что «ci: company» находится в пространстве имен «companyInfos.xsd», но компоненты из этого пространства имен не ссылаются на файл документа схемы: /// home/jiby/Dropbox/ID2208_shared% 20with% 20JB/SampleParser/ID2208_hw1/XML/employmentrecord.xsd. Если это неправильное пространство имен, возможно, необходимо изменить префикс «ci: company». Если это правильное пространство имен, то к 'file: ///home/jiby/Dropbox/ID2208_shared%20with%20JB/SampleParser/ID2208_hw1/xml/employmentrecord.xsd следует добавить соответствующий тег' import '.

(я не знаю, если это может быть полезно, но вот два XML-файлы)

<?xml version="1.0" encoding="UTF-8"?> 
<employment xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="er" 
      xmlns:ci="companyInfos.xsd" 
     > 
    <ci:company> 
      <companyName> 
       Google 
      </companyName> 
      <foundationDate> 
       1995-09-15 
      </foundationDate> 
      <field> 
       Search engine 
      </field> 
      <employeeCount> 
       40000 
      </employeeCount> 
      <logo> 
       http://static3.wikia.nocookie.net/__cb20100520131748/logopedia/images/5/5c/Google_logo.png 
      </logo> 
      <description> 
       Google is an American multinational corporation specializing in Internet-related services and products. These include search, cloud computing, software, and online advertising technologies 
      </description> 
    </ci:company> 
    <position>Chief Finantial Opportunist</position> 
    <duration>1 year</duration> 
    <dateStart>2012-01-01</dateStart> 
    <current>false</current> 
</employment> 


<?xml version="1.0" encoding="UTF-8"?> 
<company xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns="ci"> 
    <companyName> 
     Google 
    </companyName> 
    <foundationDate> 
     1995-09-15 
    </foundationDate> 
    <field> 
     Search engine 
    </field> 
    <employeeCount> 
     40000 
    </employeeCount> 
    <logo> 
     http://static3.wikia.nocookie.net/__cb20100520131748/logopedia/images/5/5c/Google_logo.png 
    </logo> 
    <description> 
     Google is an American multinational corporation specializing in Internet-related services and products. These include search, cloud computing, software, and online advertising technologies 
    </description> 
    <httpLink>http://google.com</httpLink> 
</company> 

Мы попытались посмотреть на форумах для ответа, но предлагаемые решения не кажутся работа, файл всегда имел некоторые проблемы для проверки.

+0

Просто угадайте, но не нужно ли определять 'ci: company' как' ', поскольку вы имеете в виду уже определенный тип? –

+0

У нас была эта ошибка с этим: org.xml.sax.SAXParseException; systemId: файл: ///Users/kevin/Dropbox/ID2208_shared%20with%20JB/SampleParser/ID2208_hw1/xml/employmentrecord.xsd; lineNumber: 12; columnNumber: 40; s4s-att-not-allowed: атрибут 'typeref' не должен фигурировать в элементе 'element'. – Kevin

+0

Не уверен, что ваши проблемы в точности, ссылки на элементы из импортированной схемы работают в нашем случае довольно хорошо. Возможно, посмотрите на [эту ссылку здесь] (http://www.w3schools.com/schema/el_element.asp) –

ответ

0

Я думаю, что вы путаетесь между префиксами пространства имен и URI пространства имен. Атрибут пространства имен xs: importSchema и атрибут targetNamespace схемы xs: оба должны быть URI, и они должны совпадать. Вы также должны привязать префикс к этому URI и использовать этот префикс в любых ссылках на имена из импортированного пространства имен схемы.

Смежные вопросы