2015-10-08 90 views
0

當我在mec.xsd中定義XML模式時,它不適用於元素。我該如何解決這個問題?謝謝。如何在XML中使用多個名稱空間編寫xsd文件?

<l:primary>XML</l:primary> 

mec.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<people xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.example.com mc.xsd" 
     xmlns:l="http://www.example2.com" 
     xmlns="http://www.example.com"> 
    <person> 
     <name>Marcus</name> 
     <language> 
      <l:primary>XML</l:primary> 
     </language> 
    </person> 
</people> 

mc.xsd

<xs:schema version="1.0" 
      xmlns:xs="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="http://www.example.com" 
      xmlns="http://www.example.com" 
      elementFormDefault="qualified"> 
    <xs:element name="people"> 
     <xs:complexType mixed="true"> 
      <xs:choice minOccurs="0" maxOccurs="unbounded"> 
       <xs:element name="person"> 
        <xs:complexType mixed="true"> 
         <xs:sequence> 
          <xs:element name="name" type="xs:string"/> 
          <xs:element name="language"> 
           <xs:complexType mixed="true"> 
            <xs:element name="primary" type="xs:string"/>    
           </xs:complexType> 
          </xs:element> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
      </xs:choice> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 
+0

對不起,它一直的方式長時間,因爲我這個搞砸東西......希望別人會來和幫助。 –

回答

1
  • 你必須使用兩種模式。每個名稱空間一個模式。
  • 必須使用xsd:import才能從不同的 名稱空間中引入XSD。

  • 您必須僅使用主架構 (mc.xsd)來驗證xml文檔。

primary.xsd(導入模式)

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" 
    targetNamespace="http://www.example2.com"> 
    <xs:element name="primary" type="xs:string"/> 
</xs:schema> 

mc.xsd(主模式)

<xs:schema version="1.0" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://www.example.com" 
    xmlns="http://www.example2.com" 
    elementFormDefault="qualified"> 
    <xs:import namespace="http://www.example2.com" schemaLocation="primary.xsd"/> 
    <xs:element name="people"> 
     <xs:complexType mixed="true"> 
      <xs:choice minOccurs="0" maxOccurs="unbounded"> 
       <xs:element name="person"> 
        <xs:complexType mixed="true"> 
         <xs:sequence> 
          <xs:element name="name" type="xs:string"/> 
          <xs:element name="language"> 
           <xs:complexType mixed="true"> 
            <xs:sequence> 
             <xs:element ref="primary"/> 
            </xs:sequence> 

           </xs:complexType> 
          </xs:element> 
         </xs:sequence> 
        </xs:complexType> 
       </xs:element> 
      </xs:choice> 
     </xs:complexType> 
    </xs:element> 
</xs:schema> 
相關問題