DTD - atrybuty
W tym rozdziale omówimy atrybuty DTD. Atrybut dostarcza więcej informacji o elemencie, a dokładniej definiuje właściwość elementu. Atrybut XML ma zawsze postać pary nazwa-wartość. Element może mieć dowolną liczbę unikalnych atrybutów.
Deklaracja atrybutów jest bardzo podobna do deklaracji elementów pod wieloma względami, z wyjątkiem jednego; zamiast deklarować dopuszczalną zawartość elementów, deklarujesz listę dopuszczalnych atrybutów dla każdego elementu. Listy te nazywane są deklaracjami ATTLIST.
Składnia
Podstawowa składnia deklaracji atrybutów DTD jest następująca -
<!ATTLIST element-name attribute-name attribute-type attribute-value>
W powyższej składni -
Atrybuty DTD zaczynają się od słowa kluczowego <! ATTLIST, jeśli element zawiera atrybut.
element-name określa nazwę elementu, którego dotyczy atrybut.
attribute-name określa nazwę atrybutu, który jest zawarty w nazwie elementu.
attribute-typedefiniuje typ atrybutów. Więcej na ten temat omówimy w kolejnych sekcjach.
attribute-valueprzyjmuje stałą wartość, którą muszą definiować atrybuty. Więcej na ten temat omówimy w kolejnych sekcjach.
Przykład
Poniżej znajduje się prosty przykład deklaracji atrybutów w DTD -
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #REQUIRED>
]>
<address>
<name id = "123">Tanmay Patil</name>
</address>
Przejdźmy przez powyższy kod -
Rozpocznij od deklaracji XML z następującą instrukcją -
<?xml version = "1.0"?>
Bezpośrednio po nagłówku XML znajduje się deklaracja typu dokumentu, powszechnie określana jako DOCTYPE, jak pokazano poniżej -
DOCTYPE informuje analizator składni, że DTD jest powiązany z tym dokumentem XML. Deklaracja DOCTYPE ma wykrzyknik (!) Na początku nazwy elementu.
<!DOCTYPE address [
Poniżej znajduje się treść DTD. Tutaj zadeklarowaliśmy element i atrybut -
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
Identyfikator atrybutu dla nazwy elementu jest zdefiniowany jak podano poniżej -
Tutaj typ atrybutu to CDATA, a jego wartość to #WYMAGANE .
<!ATTLIST name id CDATA #REQUIRED>
Zasady deklaracji atrybutów
Wszystkie atrybuty użyte w dokumencie XML muszą być zadeklarowane w definicji typu dokumentu (DTD) przy użyciu deklaracji listy atrybutów
Atrybuty mogą pojawiać się tylko w tagach początkowych lub pustych.
Słowo kluczowe ATTLIST musi być zapisane wielkimi literami
Żadne zduplikowane nazwy atrybutów nie będą dozwolone na liście atrybutów dla danego elementu.
Typy atrybutów
Podczas deklarowania atrybutów można określić, w jaki sposób procesor powinien obsługiwać dane, które pojawiają się w wartości. Możemy podzielić typy atrybutów na trzy główne kategorie -
Typ łańcucha
Typy tokenizowane
Wyliczone typy
Poniższa tabela zawiera podsumowanie różnych typów atrybutów -
Sr.No. | Typ i opis |
---|---|
1 | CDATA CDATA to dane znakowe (tekst, a nie znaczniki). Jest to typ atrybutu typu String . |
2 | ID Jest to unikalny identyfikator atrybutu. Nie powinien pojawiać się więcej niż raz. Jest to typ atrybutu tokenizowanego . |
3 | IDREF Służy do odwoływania się do identyfikatora innego elementu. Służy do nawiązywania połączeń między elementami. Jest to typ atrybutu tokenizowanego . |
4 | IDREFS Służy do odwoływania się do wielu identyfikatorów. Jest to typ atrybutu tokenizowanego . |
5 | ENTITY Reprezentuje podmiot zewnętrzny w dokumencie. Jest to typ atrybutu tokenizowanego . |
6 | ENTITIES Reprezentuje listę podmiotów zewnętrznych w dokumencie. Jest to typ atrybutu tokenizowanego . |
7 | NMTOKEN Jest podobny do CDATA, a wartość atrybutu składa się z prawidłowej nazwy XML. Jest to typ atrybutu tokenizowanego . |
8 | NMTOKENS Jest podobny do CDATA, a wartość atrybutu składa się z listy prawidłowych nazw XML. Jest to typ atrybutu tokenizowanego . |
9 | NOTATION Element będzie się odnosił do notacji zadeklarowanej w dokumencie DTD. Jest to wyliczeniowy typ atrybutu . |
10 | Enumeration Pozwala na zdefiniowanie określonej listy wartości, dla których jedna z wartości musi pasować. Jest to wyliczeniowy typ atrybutu . |
Deklaracja wartości atrybutu
W każdej deklaracji atrybutu musisz określić, w jaki sposób wartość pojawi się w dokumencie. Możesz określić, czy atrybut -
może mieć wartość domyślną
może mieć stałą wartość
jest wymagane
jest domniemana
Wartości domyślne
Zawiera wartość domyślną. Wartości można ująć w pojedyncze cudzysłowy (') lub podwójne cudzysłowy (").
Syntax
Poniżej znajduje się składnia wartości -
<!ATTLIST element-name attribute-name attribute-type "default-value">
gdzie wartość-domyślna to zdefiniowana wartość atrybutu.
Example
Poniżej znajduje się prosty przykład deklaracji atrybutu z wartością domyślną -
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA "0">
]>
<address>
<name id = "123">
Tanmay Patil
</name>
</address>
W tym przykładzie mamy element name z identyfikatorem atrybutu, którego domyślną wartością jest 0 . Wartość domyślna jest ujęta w podwójne cudzysłowy.
FIXED Values
Słowo kluczowe #FIXED, po którym następuje stała wartość, jest używane, gdy chcesz określić, że wartość atrybutu jest stała i nie można jej zmienić. Typowym zastosowaniem stałych atrybutów jest określanie numerów wersji.
Syntax
Poniżej znajduje się składnia stałych wartości -
<!ATTLIST element-name attribute-name attribute-type #FIXED "value" >
gdzie #FIXED jest zdefiniowaną wartością atrybutu.
Example
Poniżej znajduje się prosty przykład deklaracji atrybutu z wartością FIXED -
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address (company)*>
<!ELEMENT company (#PCDATA)>
<!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>
<address>
<company name = "tutorialspoint">we are a free online teaching faculty</company>
</address>
W tym przykładzie użyliśmy słowa kluczowego #FIXED, gdzie wskazuje, że wartość „tutorialspoint” jest jedyną wartością dla nazwy atrybutu elementu <firma>. Jeśli spróbujemy zmienić wartość atrybutu, to daje to błąd.
Poniżej znajduje się nieprawidłowy DTD -
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address (company)*>
<!ELEMENT company (#PCDATA)>
<!ATTLIST company name NMTOKEN #FIXED "tutorialspoint">
]>
<address>
<company name = "abc">we are a free online teaching faculty</company>
</address>
WYMAGANE wartości
Ilekroć chcesz określić, że atrybut jest wymagany, użyj słowa kluczowego #REQUIRED.
Syntax
Poniżej znajduje się składnia #REQUIRED -
<!ATTLIST element-name attribute-name attribute-type #REQUIRED>
gdzie #REQUIRED to zdefiniowany typ atrybutu.
Example
Poniżej znajduje się prosty przykład deklaracji atrybutu DTD ze słowem kluczowym #REQUIRED -
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #REQUIRED>
]>
<address>
<name id = "123">
Tanmay Patil
</name>
</address>
W tym przykładzie użyliśmy REQUIRED słowo kluczowe, aby określić, że atrybut id musi być przewidziany element-name nazwą
DOROZUMIANE Wartości
Deklarując atrybuty, należy zawsze określić deklarację wartości. Jeśli deklarowany atrybut nie ma wartości domyślnej, nie ma ustalonej wartości i nie jest wymagany, należy zadeklarować, że atrybut jest taki, jaki jest implikowany . Słowo kluczowe #IMPLIED służy do określenia domniemanego atrybutu .
Syntax
Poniżej znajduje się składnia #IMPLIED -
<!ATTLIST element-name attribute-name attribute-type #IMPLIED>
gdzie #IMPLIED to zdefiniowany typ atrybutu.
Example
Poniżej znajduje się prosty przykład #IMPLIED
<?xml version = "1.0"?>
<!DOCTYPE address [
<!ELEMENT address ( name )>
<!ELEMENT name ( #PCDATA )>
<!ATTLIST name id CDATA #IMPLIED>
]>
<address>
<name />
</address>
W tym przykładzie użyliśmy słowa kluczowego #IMPLIED, ponieważ nie chcemy określać żadnych atrybutów, które mają być zawarte w nazwie elementu . Jest to opcjonalne.