2011-09-21 9 views
8

Vorrei convalidare che un elemento 'Test' dovrebbecontenuti restrizione e attribuire la convalida sullo stesso elemento in XSD

  • avere il suo contenuto limitato (ad esempio, utilizzando una restrizione pattern), e
  • Contiene determinati attributi (ad esempio, 'id', 'classe' e 'nome').

Il XSD che sto scrivendo si presenta così:

<xsd:element name="Test" minOccurs="0" maxOccurs="unbounded"> 
    <xsd:complexType mixed="true"> 
    <xsd:simpleContent> 
     <xsd:restriction> 
     <xsd:pattern value="xyz"/> 
     </xsd:restriction> 
    </xsd:simpleContent> 
    <xsd:attribute name="id" type="xsd:string"></xsd:attribute> 
    <xsd:attribute name="class" type="xsd:string"></xsd:attribute> 
    <xsd:attribute name="name" type="xsd:string"></xsd:attribute> 
    </xsd:complexType> 
</xsd:element> 

Tuttavia, quando ho codificare ciò in Visual Studio, ottengo il seguente errore sul 'xsd: attributo' elementi:

e modello di contenuto 'attributo' sono mutuamente esclusive

c'è un modo per convalidare sia una restrizione content e attributi sullo stesso elemento?

risposta

13

È necessario separare la restrizione e dargli un nome, quindi fare riferimento ad essa come un tipo di base per un'estensione. Come questo:

<xsd:simpleType name="RestrictedString"> 
    <xsd:restriction base="xsd:string"> 
     <xsd:pattern value="xyz" /> 
    </xsd:restriction> 
    </xsd:simpleType> 
    <xsd:element name="Test"> 
    <xsd:complexType> 
     <xsd:simpleContent> 
     <xsd:extension base="RestrictedString"> 
      <xsd:attribute name="id" type="xsd:string" /> 
      <xsd:attribute name="class" type="xsd:string" /> 
      <xsd:attribute name="name" type="xsd:string" /> 
     </xsd:extension> 
     </xsd:simpleContent> 
    </xsd:complexType> 
    </xsd:element> 
+0

Grazie! Questo ha funzionato perfettamente. È anche conveniente, dal momento che voglio riutilizzare la restrizione altrove. BTW - Ho riscontrato problemi con il contenuto multilinea, ma ho risolto questi problemi aggiungendo '' dopo il pattern. – Jonathan

Problemi correlati