Você pode incluir
uma restrição em um tipo simples ou complexo em um modelo UML, e
então executar uma transformação UML-para-XSD para gerar um
esquema XML que contém tipos simples ou complexos com seus
possíveis valores restritos para corresponder a um padrão que
uma expressão regular especifica. Também pode executar uma transformação XSD-para-UML em um
esquema que contém um tipo com restrição para gerar esses
elementos no modelo.
Por Que e Quando Desempenhar Esta Tarefa
A classe de origem no modelo pode ser um tipo simples ou
complexo que possui um relacionamento de generalização com outro tipo
simples ou complexo, respectivamente. Quando você executa uma transformação UML-para-XSD no
modelo de origem, se uma generalização entre tipos
simples não tiver nenhum estereótipo, ela ainda é gerada como uma
restrição XSD no esquema XML, porque os tipos simples não podem
ter uma extensão como um elemento filho. Se a generalização entre tipos complexos não tiver estereótipo, ela
é gerada como uma extensão XSD no esquema XML. Se a mesma
generalização tiver a restrição «restriction», ela é gerada como uma
restrição XSD.
Quando você executa uma transformação XSD-para-UML
em um esquema XML, as restrições XSD geram tipos simples ou
complexos com um relacionamento de generalização para outro
tipo da mesma espécie. O relacionamento de generalização é gerado com um estereótipo
«restriction».
Para restringir um tipo denominado Class1
em um pacote denominado Package1:
Exemplo
Depois de configurar e executar uma transformação
UML-para-XSD com Package1 como a origem, o modelo de exemplo gera um
esquema XML semelhante ao seguinte código XML:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:Package1="http://Package1/" targetNamespace="http://Package1/">
<xsd:simpleType name="Class1">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{5}(-[0-9]{4})?"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>