220 likes | 348 Views
D ocument T ype D efinition - 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.
E N D
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 [ <!ELEMENTtutorial(#PCDATA)>]> <tutorial> Tutorial de DTD </tutorial>
Introdução <?xml version='1.0' encoding='ISO-8859-1'?> <!DOCTYPE tutorial [ <!ELEMENTtutorial (AAA,BBB)> <!ELEMENTAAA(#PCDATA)> <!ELEMENTBBB(#PCDATA)> ]> <tutorial> <AAA/> <BBB/> </tutorial>
Elementos aninhados • Zero ou mais elementos AAA seguidos de um único elemento BBB: <!ELEMENTtutorial (AAA*,BBB)> • Um ou mais elementos AAA seguidos de um único elemento BBB: <!ELEMENTtutorial (AAA+,BBB)> • AAA opcional: <!ELEMENTtutorial (AAA?,BBB)>
Exercício • Construa três exemplos válidos e três inválidos de documentos XML baseados no DTD abaixo: <!ELEMENTXXX (AAA?,BBB+)> <!ELEMENTAAA (CCC?,DDD*)> <!ELEMENTBBB (CCC,DDD)> <!ELEMENTCCC(#PCDATA)> <!ELEMENTDDD(#PCDATA)>
Seleção “|” <!ELEMENTXXX (AAA,BBB)> <!ELEMENTAAA (CCC,DDD)> <!ELEMENTBBB (CCC|DDD)> <!ELEMENTCCC(#PCDATA)> <!ELEMENTDDD(#PCDATA)>
Intercalação de texto e elementos • O elemento BBB pode conter qualquer combinação de texto e do elemento CCC: <!ELEMENTtutorial (AAA*,BBB)> <!ELEMENTXXX (AAA+,BBB+)> <!ELEMENTAAA (BBB|CCC )> <!ELEMENTBBB (#PCDATA|CCC )*> <!ELEMENTCCC(#PCDATA)>
Exercício • Construa um XML válido para o DTD: <!ELEMENTtutorial (AAA*,BBB)> <!ELEMENTXXX (AAA+,BBB+)> <!ELEMENTAAA (BBB|CCC )> <!ELEMENTBBB (#PCDATA|CCC )*> <!ELEMENTCCC(#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 <!ELEMENTattributes(#PCDATA)> <!ATTLISTattributes 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. <!ELEMENTattributes(#PCDATA)> <!ATTLISTattributes 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 <!ELEMENTXXX (AAA+,BBB+,CCC+)> <!ELEMENTAAA(#PCDATA)> <!ELEMENTBBB(#PCDATA)> <!ELEMENTCCC(#PCDATA)> <!ATTLISTAAA id ID#REQUIRED> <!ATTLISTBBB code ID#IMPLIED list NMTOKEN#IMPLIED> <!ATTLISTCCC X ID#REQUIRED Y NMTOKEN#IMPLIED>
IDREF • Um atributo IDREF deve referencia algum ID existente no documento. IDREFS referencia um seqüência de IDs <!ELEMENTXXX (AAA+,BBB+,CCC+,DDD+)> <!ELEMENTAAA(#PCDATA)> <!ELEMENTBBB(#PCDATA)> <!ELEMENTCCC(#PCDATA)> <!ELEMENTDDD(#PCDATA)> <!ATTLISTAAA mark ID#REQUIRED> <!ATTLISTBBB id ID#REQUIRED> <!ATTLISTCCC ref IDREF#REQUIRED> <!ATTLISTDDD 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 <!ELEMENTXXX (AAA+,BBB+)> <!ELEMENTAAA(#PCDATA)> <!ELEMENTBBB(#PCDATA)> <!ATTLISTAAA true ( yes | no ) #REQUIRED> <!ATTLISTBBB 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 <!ATTLISTAAA true ( yes | no ) "yes">
Elemento só com atributos, sem texto (Vazio) <!ELEMENTAAAEMPTY> Exemplo: <XXX> <AAA true="yes"/> <AAA true="no"></AAA> </XXX>