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.