View
118
Download
4
Category
Preview:
Citation preview
Document Type Definition - DTD
Criando Documentos XML “Válidos”
Introdução
• Um documento XML é válido somente se este:– possui um DTD associado a ele – está de acordo com com as restrições impostas
no DTD
Introdução
• O DTD deve aparecer antes do primeiro elemento em um documento XML ou como um documento a parte.
• O nome após a etiqueta DOCTYPE no DTD deve ser o nome da raiz do documento XML
Introdução
• Exemplo: Um documento XML pode conter apenas o elemento raiz tutorial contendo algum texto:
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE tutorial [
<!ELEMENT tutorial (#PCDATA)>]>
<tutorial> Tutorial de DTD </tutorial>
Introdução
<?xml version='1.0' encoding='ISO-8859-1'?>
<!DOCTYPE tutorial [<!ELEMENT tutorial (AAA , BBB)><!ELEMENT AAA (#PCDATA)><!ELEMENT BBB (#PCDATA)>]> <tutorial> <AAA/><BBB/></tutorial>
Elementos aninhados
• Zero ou mais elementos AAA seguidos de um único elemento BBB:
<!ELEMENT tutorial (AAA* , BBB)>
• Um ou mais elementos AAA seguidos de um único elemento BBB:
<!ELEMENT tutorial (AAA+ , BBB)>
• AAA opcional:<!ELEMENT tutorial (AAA? , BBB)>
Exercício
• Construa três exemplos válidos e três inválidos de documentos XML baseados no DTD abaixo:
<!ELEMENT XXX (AAA? , BBB+)>
<!ELEMENT AAA (CCC? , DDD*)>
<!ELEMENT BBB (CCC , DDD)>
<!ELEMENT CCC (#PCDATA)>
<!ELEMENT DDD (#PCDATA)>
Seleção “|”
<!ELEMENT XXX (AAA , BBB)>
<!ELEMENT AAA (CCC , DDD)>
<!ELEMENT BBB (CCC | DDD)>
<!ELEMENT CCC (#PCDATA)>
<!ELEMENT DDD (#PCDATA)>
Intercalação de texto e elementos
• O elemento BBB pode conter qualquer combinação de texto e do elemento CCC:
<!ELEMENT tutorial (AAA* , BBB)>
<!ELEMENT XXX (AAA+ , BBB+)>
<!ELEMENT AAA (BBB | CCC )>
<!ELEMENT BBB (#PCDATA | CCC )*>
<!ELEMENT CCC (#PCDATA)>
Exercício
• Construa um XML válido para o DTD:<!ELEMENT tutorial (AAA* , BBB)>
<!ELEMENT XXX (AAA+ , BBB+)>
<!ELEMENT AAA (BBB | CCC )>
<!ELEMENT BBB (#PCDATA | CCC )*>
<!ELEMENT CCC (#PCDATA)>
Atributos
• Servem para atribuir pares nome-valor com elementos.
• Atributos só podem aparecer em etiquetas de início e em etiquetas vazias.
• A declaração de atributos inicia com o nome ATTLIST, seguido do nome do elemento e da lista de seus atributos.
Atributos
<!ELEMENT attributes (#PCDATA)>
<!ATTLIST attributes
aaa CDATA #REQUIRED
bbb CDATA #IMPLIED>
A ordem dos atributos não importa
Atributos CDATA: permite qualquer caracter de acordo com as regras de boa formação
#REQUIRED: obrigatório
#IMPLIED: Opcional
NMTOKEN(S)
• NMTOKEN: letras, dígitos, ponto [ . ] , hífen [ - ], underline [ _ ] dois pontos [ : ] .
• NMTOKENS: NMTOKEN mais o espaço em branco: um ou mais espaços em branco, return, fim de linha e tabulações.
<!ELEMENT attributes (#PCDATA)>
<!ATTLIST attributes
aaa CDATA #IMPLIED
bbb NMTOKEN #REQUIRED
ccc NMTOKENS #REQUIRED>
Tipo ID
• Um atributo do tipo ID pode conter apenas caracteres permitidos pelo tipo NMTOKEN e devem iniciar por uma letra.
• Nenhum tipo de elemento deve conter mais de um atributo do tipo ID
• O valor de um atributo do tipo ID deve ser único dentre todos atributos ID das instâncias do elemento.
Tipo ID
<!ELEMENT XXX (AAA+ , BBB+ , CCC+)><!ELEMENT AAA (#PCDATA)><!ELEMENT BBB (#PCDATA)><!ELEMENT CCC (#PCDATA)><!ATTLIST AAA id ID #REQUIRED><!ATTLIST BBB code ID #IMPLIED list NMTOKEN #IMPLIED> <!ATTLIST CCC X ID #REQUIRED Y NMTOKEN #IMPLIED>
IDREF • Um atributo IDREF deve referencia algum ID
existente no documento. IDREFS referencia um seqüência de IDs
<!ELEMENT XXX (AAA+ , BBB+, CCC+, DDD+)><!ELEMENT AAA (#PCDATA)><!ELEMENT BBB (#PCDATA)><!ELEMENT CCC (#PCDATA)><!ELEMENT DDD (#PCDATA)><!ATTLIST AAA mark ID #REQUIRED><!ATTLIST BBB id ID #REQUIRED> <!ATTLIST CCC ref IDREF #REQUIRED><!ATTLIST DDD ref IDREFS #REQUIRED>
IDREF - Exemplo
<XXX>
<AAA mark="a1"/>
<AAA mark="a2"/>
<AAA mark="a3"/>
<BBB id="b001" />
<CCC ref="a3" />
<DDD ref="a1 b001 a2" />
</XXX>
Especificando valores de atributo permitidos
<!ELEMENT XXX (AAA+, BBB+)>
<!ELEMENT AAA (#PCDATA)>
<!ELEMENT BBB (#PCDATA)>
<!ATTLIST AAA
true ( yes | no ) #REQUIRED>
<!ATTLIST BBB
month (1|2|3|4|5|6|7|8|9|10|11|12) #IMPLIED>
Valores permitidos - Exemplo
<XXX>
<AAA true="yes"/>
<AAA true="no"/>
<AAA true="yes"/>
<BBB month="8" />
<BBB month="2" />
<BBB month="12" />
</XXX>
Valor Default
<!ATTLIST AAA
true ( yes | no ) "yes">
Elemento só com atributos, sem texto (Vazio)
<!ELEMENT AAA EMPTY>
Exemplo:
<XXX>
<AAA true="yes"/>
<AAA true="no"></AAA>
</XXX>
Recommended