quinta-feira, 20 de maio de 2010

Validação XML usando XSD

Visando padronizar o uso da validação XML utilizando arquivo XSD, publicarei aqui alguns problemas que passei e a respectiva solução.
  • Para facilitar o trabalho de criar o XSD, é possível transformar um XML em XSD?

Sim, basta acessar http://www.flame-ware.com/Products/XML-2-XSD/

  • Como validar uma lista enumerada no XSD?
<xs:simpleType name="tAmbiente"> <xs:restriction base="xs:string"> <xs:enumeration value="Desenvolvimento" /> <xs:enumeration value="Testes" /> <xs:enumeration value="Produção" /> </xs:restriction> </xs:simpleType>
  • Como ter um elemento inteiro (ou qualquer outro tipo) que aceite vazio no XSD?
<xs:simpleType name="tVazio"> <xs:restriction base="xs:string"> <xs:length value="0" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="tInteiroOuVazio"> <xs:union memberTypes="xs:integer tVazio" /> </xs:simpleType>
  • Como validar e-mail no XSD?
<xs:simpleType name="tEmail"> <xs:restriction base="xs:string"> <xs:pattern value="^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="tEmailOuVazio"> <xs:union memberTypes="tEmail tVazio" /> </xs:simpleType> <xs:simpleType name="tVariosEmails"> <xs:restriction base="xs:string"> <xs:pattern value="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*([,;]\s*\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*)*" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="tVariosEmailsOuVazio"> <xs:union memberTypes="tVariosEmails tVazio" /> </xs:simpleType>

Nenhum comentário: