2012-12-19 22 views
6

Non riesco davvero ad approfondire il mio progetto per una serie di motivi vincolanti.C'è una differenza tra XSD: Pattern e C# Regex?

In sostanza, sto provando a pre-validare un oggetto prima di serializzarlo e quindi convalidarlo su uno schema. Lo schema ha la convalida di un nome, che so non è l'ideale e il tuo vantaggio non è la convalida di un nome, ma non riesco a replicare una regex valida per ciò che lo schema sta cercando di fare.

<xsd:simpleType name="CharsetD"> 
    <xsd:restriction base="xsd:string"> 
    <xsd:pattern value="[A-Za-z \-&apos;]*"/> 
    </xsd:restriction> 
</xsd:simpleType> 

<xsd:element minOccurs="0" maxOccurs="2" name="Fore"> 
    <xsd:simpleType> 
    <xsd:restriction base="CharsetD"> 
     <xsd:minLength value="1"/> 
     <xsd:maxLength value="35"/> 
     <xsd:pattern value="[A-Za-z].*"/> 
    </xsd:restriction> 
    <xsd:simpleType> 
</xsd:element> 

ho semplicemente pensato che nel caso di cui sopra, che ho potuto provare e basta usare la xsd:pattern per il charset.

Ho provato a utilizzare [A-Za-z \-&apos;]* che ha restituito un nome come Luke2 come valido, ma la convalida dello schema ha detto che non era perché conteneva un numero.

La mia domanda è, come posso replicare quanto sopra in un singolo regex c#? Inoltre, c'è qualche differenza tra il modo in cui funziona lo schema schema rispetto a se l'ho usato in .NET che posso notare per il futuro?

risposta

2

ho trovato il problema, anche se travestito da non ho davvero lavorato a lungo con XML Schema

La differenza

Il tipo CharsetD non basta usare il modello, come questo solo isn' t abbastanza buono da convalidare i nomi con i numeri, quindi quando ho provato ad usare solo il modello - ha permesso numeri. C'è una linea sul tipo che limita i numeri, e quindi perché lo schema restituisce un errore in cui la regex non lo fa.

<xsd:restriction base="xsd:string"> 

Soluzione

ho creato un diverso regex singolo che approvvigionerebbe la restrizione string che viene applicato nel mio schema.

^[\p{L} \.\-]+$ 
Problemi correlati