XML XSLT
Start arrow DTD arrow Deklarowanie atrybutów
StartJęzyk XMLDTDXSLTXML SchemaStyle CSSXHTMLXSLTWMLAnkietaLinki
Menu serwisu
Start
Język XML
DTD
XSLT
XML Schema
Style CSS
XHTML
XSLT
WML
Ankieta
Linki

Partnerzy

Internet - podstawy internetu, email, Usenet, FTP, WWW

Tonery,tusze - bębny do drukarek, atramenty do drukarek, folie do faksów w sklepie internetowym Tonershop

Sieci komputerowe - systemy sieciowe, technologie

Systemy sprzedaży - handel, kody kreskowe, identyfikacja towarów

Automatyczna identyfikacja - systemy identyfikacji, etykiet

Deklarowanie atrybutów

W dokumencie 2.xml na stronie 10, oprócz elementów zastosowano także atrybuty np.:

<PRZEDMIOT kod="JZ">

Podobnie jak elementy, w DTD należy także zadeklarować jakie są nazwy, typy i wymagania odnośnie atrybutów tych elementów.

Atrybut definiuje się za pomocą konstrukcji <!ATTLIST  ...  >.

<!ATTLIST nazwaElementu nazwaAtrybutu typ wartośćDomyślna>

np.

<!ATTLIST PRZEDMIOT kod CDATA "niezdefiniowany">

W miejsce fragmentu wartoscDomyślna  można zarówno konkretną wartość tekstową, jak i jedno z trzech wyrażeń #IMPLIED, #REQUIRED i #FIXED.

Zastosowanie #REQUIRED oznacza, że atrybut jest wymagany i nie jest określana jego domyślna wartość np.

<!ELEMENT PROSTOKAT EMPTY>
<!ATTLIST PROSTOKAT SZEROKOSC CDATA #REQUIRED>
<!ATTLIST PROSTOKAT WYSOKOSC CDATA #REQUIRED>

#IMPLIED umożliwia brak konieczności definiowania konkretnej wartości domyślnej, ale także określa brak konieczności definiowania atrybutu w prawidłowym dokumencie XML np.:

<!ATTLIST AUTOR ADRES CDATA #IMPLIED>

Zastosowanie #FIXED z dodatkowo podaną wartością określa, że atrybut posiada założoną wartość domyślną, której nie można zmienić. Przykładowy kod:

<!ATTLIST DOKUMENT LANGUAGE CDATA #FIXED "POLSKI">

wymusza w każdym poprawnym dokumencie definicję:

<DOKUMENT LANGUAGE="POLSKI">

W porównaniu do możliwości określania rodzaju zawartości elementów, w przypadku atrybutów istnieje większa liczba typów. Ich krótki opis przedstawiono w tabeli 4.

Typ atrybutuOpis
CDATA

Najczęściej stosowany typ atrybutu. Oznacza dane znakowe – tekst bez znaczników.
Przykład w DTD:

<!ATTLIST KLIENT ADRES CDATA #REQUIRED>

W poprawnym dokumencie XML:

<KLIENT ADRES="43-300 Bielsko-Biała, ul.Legionów">

Typ wyliczany

Formułowany jest w formie listy alternatywnych ciągów znaków, które można umieszczać jako wartości atrybutów.
Przykład w DTD:

<!ATTLIST KLIENT ZAREJESTROWANY (TAK|NIE) "NIE">

W poprawnym dokumencie XML:

<KLIENT ZAREJESTROWANY="TAK">
<KLIENT ZAREJESTROWANY="NIE">
<KLIENT> <!-- wg DTD domyślnie przyjęto że niezarejestrowany -->

NMTOKEN

Atrybut jest poprawną nazwą XML (pojęcie poprawnej nazwy zdefiniowano na str. 11). Jest to więc wartość w której np. nie może wystąpić znak spacji, a pierwszym znakiem nie może być liczba.
Przykład w DTD:

<!ATTLIST PRZEDMIOT kod NMTOKEN #REQUIRED>

W poprawnym dokumencie XML:

<PRZEDMIOT kod="JZ">

NMTOKENS

Atrybut jest listą poprawnych nazw XML rozdzielonych spacjami.
Przykład w DTD:

<!ATTLIST PRZEDMIOT powiazane NMTOKENS #REQUIRED>

w poprawnym dokumencie XML:

<PRZEDMIOT pozwiazane="PP ESI PI">

ID

Atrybut jest poprawną nazwą XML oraz jego wartość jest unikalna czyli występuje w dokumencie jako identyfikator tylko 1 raz.
Przykład w DTD:

<!ATTLIST SAMOCHOD IDENTYFIKATOR ID #REQUIRED>

 W poprawnym dokumencie XML:

<SAMOCHOD IDENTYFIKATOR="S0021" />
<SAMOCHOD IDENTYFIKATOR="unikalnyID" />

IDREF

Wartość atrybutu IDREF jest wartością atrybutu ID innego elementu w dokumencie. Wykorzystywane jest to do tworzenia powiązań między elementami. Demonstruje to przykład 7.xml. Stosownie do przedstawionej w nim definicji DTD niepoprawny byłby  dodany element taki jak np.:

<STUDENT KOD="S06" KODGRUPY="k5">

jeśli nie wystąpiłby także inny element np. GRUPA z atrybutem typu ID  o wartości „k5” np.

<GRUPA SYMBOL="k5"></GRUPA>

ENTITYWartością atrybutu jest nazwa encji zadeklarowanej w DTD pozwalającej na umieszczenie danych z zewnętrznego pliku. Typ stosunkowo rzadko wykorzystywany, więc nie będzie omawiany szczegółowo.
ENTITIESWartością atrybutu jest lista wartości typu ENTITY oddzielana spacjami. Typ rzadko wykorzystywany.

Przykład 7.xml – demonstracja zastosowania ID i IDREF

<?xml version="1.0" encoding="Windows-1250"?>
     <!DOCTYPE STUDENCI [
      <!ELEMENT STUDENCI (GRUPY?,STUDENT*)>
      <!ELEMENT GRUPY (GRUPA*)>
      <!ELEMENT GRUPA (#PCDATA)>
      <!ATTLIST GRUPA SYMBOL ID #REQUIRED>
      <!ELEMENT STUDENT (NAZWISKO)>
      <!ATTLIST STUDENT KOD ID #REQUIRED>
      <!ATTLIST STUDENT KODGRUPY IDREF #REQUIRED>
      <!ELEMENT NAZWISKO (#PCDATA)> 
 ]>
<STUDENCI>
  <GRUPY>
       <GRUPA SYMBOL="SI1A"></GRUPA>
       <GRUPA SYMBOL="SZ1A"></GRUPA>
       <GRUPA SYMBOL="SI3"></GRUPA>
  </GRUPY>
<STUDENT KOD="S01" KODGRUPY="SI3">
      <NAZWISKO>Robert Iksinski</NAZWISKO>
</STUDENT>
<STUDENT KOD="S05" KODGRUPY="SI3">
      <NAZWISKO>Jerzy Iksinski</NAZWISKO>
</STUDENT>
<STUDENT KOD="S06" KODGRUPY="SI1A">
      <NAZWISKO>Maria Nowak</NAZWISKO>
</STUDENT>
</STUDENCI>

W przypadku deklarowania wielu atrybutów dla tego samego elementu można zastosować zapis skrócony. Konstrukcję tego typu zademonstrowano w przykładach poniżej.

Sposób 1 – bez skracania

<!ELEMENT KLIENT EMPTY>
<!ATTLIST KLIENT NAZWISKO CDATA #REQUIRED>
<!ATTLIST KLIENT ADRES CDATA #IMPLIED>
<!ATTLIST KLIENT EMAIL CDATA #IMPLIED>

Sposób 2 – ze skróceniem (wcięcia i podział wierszy nieistotne)

<!ELEMENT KLIENT EMPTY>
<!ATTLIST KLIENT NAZWISKO CDATA #REQUIRED>
                 ADRES CDATA #IMPLIED>
                 EMAIL CDATA #IMPLIED>

 
« poprzedni artykuł   następny artykuł »
 
Wydanie polskie: Copyright (C) 2005 Polskie Centrum Joomla! :: (C) 2018 XML XSLT
Joomla! jest wolnym oprogramowaniem udostępnianym na warunkach licencji GNU/GPL.
www.xmlxsl.pl - Język XML, język XSLT, DTD, języki XHTML, WML