Включая XML-схему один раз - PullRequest
       0

Включая XML-схему один раз

0 голосов
/ 17 декабря 2011

Допустим, я определил следующую XML-схему author.xsd:

<?xml version="1.0" encoding="UTF-8"?>   
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">  

<xs:element name="author">       
 <xs:complexType>  
  <xs:sequence>    
     <xs:element name="firstname" type="xs:string"/>      
     <xs:element name="lastname"  type="xs:string"/>     
  </xs:sequence>   
 </xs:complexType>  
</xs:element>     

</xs:schema>  
</xml>

Как бы я просто включил схему XML один раз при определении нескольких элементов автора в моем реальном файле XML? Я хотел бы избежать определения xmlns: xsi для каждого элемента author.

<?xml version="1.0"?>
<author xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:noNamespaceSchemaLocation="author.xsd">
    <FirstName>Mark</FirstName>
    <LastName>Twain</LastName>
</author>
<author xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:noNamespaceSchemaLocation="author.xsd">
     <FirstName>Awesome</FirstName>
     <LastName>Possum</LastName>
</author>

1 Ответ

1 голос
/ 17 декабря 2011

Из того, что я понял, вы хотите, чтобы XML-файл имел более 1 author. Если это так, то вам нужно определить родительский элемент и иметь author в качестве дочернего элемента. Родительский элемент действует как контейнер. Итак, вот правило XML

XML-файл может иметь только 1 корневой элемент. Все остальные элементы должны быть его потомками.

Итак, я бы изменил вашу схему следующим образом

<?xml version="1.0" encoding="UTF-8"?>   
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">  

<xs:element name="authors">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="author" maxOccurs="unbounded">       
        <xs:complexType>  
           <xs:sequence>    
              <xs:element name="firstname" type="xs:string"/>      
              <xs:element name="lastname"  type="xs:string"/>   
           </xs:sequence>   
        </xs:complexType>  
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema> 

Примечание Если вы хотите ограничить число авторов до 100, измените maxOccurs на это значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...