2010-01-22 13 views
9

Ho un documento XSD che inizia con:Per cosa è questo spazio dei nomi di importazione XSD?

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:import namespace="http://www.w3.org/XML/1998/namespace"  schemaLocation="http://www.w3.org/2001/xml.xsd"/> 
    <xs:complexType name="T_segment"> 
     <xs:sequence> 
      <xs:element ref="element" maxOccurs="unbounded"/> 
     </xs:sequence> 
     <xs:attribute ref="xml:space" use="required"/> 
     <xs:attribute ref="id" use="required"/> 
    </xs:complexType> 
... 

Quando provo ad usare questa XSD in un'applicazione di mapping come BizTalk si fa saltare in aria lamentarsi namespace. Quindi rimuovo il tag xs: import namespace e si lamenta del tag xs: attribute ref = "xml: space". Quindi, lo rimuovo e sembra funzionare bene (almeno non esplodere).

La mia domanda è, a cosa servono questi tag? Rimuovendoli sto rompendo il xsd?

Da quello che so, i namespace servono per evitare conflitti. Ma in xsd tutto è prefisso da xs e lo stesso schema ha xmlns: xs = "http://www.w3.org/2001/XMLSchema". Non sono sicuro di cosa sia l'importazione.

+0

Hai esaminato la documentazione del W3C per il tag di importazione? (Http://www.w3.org/TR/xmlschema-0/#import). –

+1

Sì, ho letto la documentazione ma non sono riuscito a capire cosa volessero dire perché entra in molti altri dettagli che non ho potuto seguire. Penso di aver bisogno di un umano per dire "Significa questo ... e portarlo fuori significa ...". – dtc

risposta

8

L'elemento <xs:import /> importa lo spazio dei nomi XML nello schema. Lo spazio dei nomi importato contiene la definizione dell'attributo "spazio". Il bit <xs:attribute ref="xml:space" use="required"/> definisce un attributo "spazio" richiesto per il tipo complesso "T_segment" per riferimento dallo schema importato (ad esempio, in modo da non dover riscrivere la definizione). L'attributo space ti dà essenzialmente la possibilità di definire se whitespace is significant for the element or not.

Ora, a seconda dell'applicazione in realtà potrebbe essere rompersi perché essenzialmente si sta rimuovendo un vincolo dal tipo complesso che potrebbe essere rilevante per l'applicazione che consuma il documento descritto da questo schema. Senza saperne di più dell'applicazione è difficile dire se questo è significativo nel tuo caso o meno.

+0

Grande. Lo capisco adesso. Grazie per averlo spiegato in termini chiari. – dtc

Problemi correlati