2013-03-22 11 views
10

Sto cercando di utilizzare il seguente in un XSDXML Schema 1.1 non riconoscere 'assert' o 'affermazione'

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" > 
<xs:element name="dimension"> 
    <xs:complexType> 
    <xs:attribute name="height" type="xs:int"/> 
    <xs:attribute name="width" type="xs:int"/> 
    <xs:assert test="@height = @width"/> 
    </xs:complexType> 
</xs:element> 

so affermare/asserzione sono parte di XML Schema 1.1, ma non 1.0. Comunque tutto quello che ho letto indica il namespace è lo stesso per entrambi: http://www.w3.org/2001/XMLSchema

Un problema minore è che il programma che sto usando per scrivere lo schema (Microsoft Visual Studio) non riconosce l'elemento 'assert', dicendo l'elemento complexType nello spazio dei nomi (...) ha un elemento figlio non valido 'assert'.

Il problema principale è che quando in realtà tenta di convalidare un XML contro questo schema, utilizzando xmllint, si getta su un errore che dice

" element assert: Schemas parser error : Element '{http://www.w3.org/2001/XMLSchema}complexType': The content is not valid. Expected is (annotation?, (simpleContent | complexContent | ((group | all | choice | sequence)?, ((attribute | attributeGroup)*, anyAttribute?)))) 

è di 1,1 semplicemente non riconosciuto da xmllint/visual studio, pur essendo punta ai 1.1 namespace?

risposta

16

Per elaborare uno schema XSD 1.1 è necessario un processore schema XSD 1.1. Microsoft non ne fornisce uno (sembrano aver rinunciato all'implementazione di nuove specifiche XML W3C). Per quanto ne so, l'unico processore XSD 1.1 disponibile sulla piattaforma .NET è Saxonica.

+0

Grazie! Sono nuovo dello schema xml, ma avrei pensato che il processore avrebbe semplicemente abbassato l'ultima definizione dallo spazio dei nomi a cui lo si indirizzava. Esistono editor 1.1 XSD compatibili per linux? – user2197116

+0

No, non ci si può aspettare un processore sviluppato nel 1994 per implementare una specifica pubblicata nel 2013. oXygen è un editor che gira su linux e supporta XSD 1.1 –