Создайте один xsd для двух файлов xml - PullRequest
0 голосов
/ 27 ноября 2011

У меня есть два xml-файла, и мне нужно создать один xsd для обоих.Это первый раз, когда я имею дело с XML-файлами.Как я могу создать один xsd для обоих xml-файлов и проверить их правильность?

Мой первый xml-файл:

<?xml version="1.0" encoding="UTF-8"?>
<specification xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DATA>
 <Id>S2</Id>
  <Name>sai</Name>
 <Service>manufaturer</Service>
  <ref_complete_customer path="/work/bsr.xml"/>
  <ref_complete_customer path="/work/srr.xml"/>
 <Service_Customers>
  <Customer Id="bs"/>
 </Service_Customers>     
 <Service_Suppliers>
     <Supplier Id="r"/>
    <Supplier Id="b"/> 
    <Supplier Id="L"/>
 </Service_Suppliers>
 </DATA>
 </specification>

Мой второй xml-файл:

<?xml version="1.0" encoding="UTF-8"?>
 <universitylist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <university>
 <refstr>bdvl_te_skrm_stc</refstr>
 <ref_complete_customer path="/work/bsr.xml"/>
 <Code>A0f11478</Code>
 <Area>sku</Area>
 <started>1987</started>
 <branch>
  <electronics>
    <students Nr="120" ece="ab">
    <student Name="svr" year="2010" rank="3"/>
    <student Name="bvr" year="2010" rank="1"/>
    </students>
  </electronics>
 </branch>
 <semister>
    <semister num="3"/>
 </semister>
 <address>
   1.address of student
  <extrainfo>
  </extrainfo>
 </address>
 </university>
</universitylist>

Это мой подход

  specification.xsd for frist file.
 universitylist.xsd for second file.

в сочетании xsd

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 

<xs:include schemaLocation="specification.xsd" />
<xs:include schemaLocation="universitylist.xsd" />

</xs:schema>

1 Ответ

1 голос
/ 27 ноября 2011

Я не уверен, почему вам нужна единая схема, которая описывает оба экземпляра документа, поскольку они кажутся совершенно не связанными. Но тот факт, что они не связаны, делает это тривиальным - вы просто комбинируете два XSD. Например, если у вас в настоящее время есть a.xsd и b.xsd, вы можете создать новый c.xsd, который просто выполняет xs: include для обоих из них.

...