r11-01.doc

(959 KB) Pobierz
Helion









Rozdział 1 ¨ Pierwsze kroki (Nagłówek strony)

Rozdział 11.
Wektorowy język znaczników

Prezentacja dokumentów XML w przeglądarkach nie powinna ograniczać się do samego tekstu i podjęto już szereg inicjatyw zmierzających do utworzenia graficznych aplikacji XML. W rozdziale 8, kiedy omawialiśmy użycie modelu DOM XML w Javie, a także w rozdziale 9, kiedy omawialiśmy interfejs SAX, utworzyliśmy przeglądarkę graficzną XML do wyświetlania okręgów. Z kolei w rozdziale 1 krótko omówiono język SVG, język Skalowalnej grafiki wektorowej. SVG istnieje już od dość dawna, ale nadal nie jest zbyt powszechnie obsługiwany. Obecnie najszerzej stosowaną graficzną aplikacją XML jest Wektorowy język znaczników (VML, Vector Markup Language) zaproponowany przez Microsoft.

Microsoft opisuje VML jako „aplikację Rozszerzalnego języka znaczników (XML) 1.0, w której zdefiniowano sposób kodowania informacji wektorowych wraz z dodatkowymi znacznikami opisującymi sposób wyświetlania tych informacji i ich modyfikowania”.

VML obsługuje znaczniki opisujące grafikę wektorową tak samo jak HTML obsługuje znaczniki opisujące dane tekstowe. VML używa własnego zestawu elementów, ale obsługuje też CSS, wobec czego można stosownie do potrzeb zmieniać styl i położenie zdefiniowanych w nim figur. VML używany jest w pakiecie Microsoft Office 2000, w programach Microsoft Word, PowerPoint i Excel. Kiedy w jednym z tych programów tworzysz grafikę, jest ona zapisywana jako VML. Język ten jest także wbudowany w Internet Explorera. Kod VML można tworzyć rysując narzędziami dołączanymi do Microsoft Office, można także samemu pisać odpowiednio kod i tą drugą możliwością zajmiemy się w tym rozdziale.

Istnieją dwa podstawowe opisy VML: podręcznik tego języka dostępny na stronach Microsoftu oraz informacja tej firmy przesłana do W3C i przez W3C opublikowana (zresztą z tej informacji niewiele wynika, gdyż poza Microsoftem nikt nie wydaje się być VML zanadto zainteresowany). Oto adresy wymienionych dokumentów; pamiętaj, że adresy Microsoftu mają tendencję do bardzo szybkiego zmieniania się:

·         http://msdn.microsoft.com/standards/vml/ref/ – podręcznik języka VML opracowany przez Microsoft, zawiera przykłady.

·         http://www.w3.org/TR/NOTE-VML – informacja wysłana W3C datowana na 13 maja 1998 roku.

VML został dodany do Internet Explorera przed wbudowaniem w tę przeglądarkę obsługi XML, zatem sposób implementacji VML nie obejmuje wysp danych XML ani żadnych tego typu mechanizmów. Zamiast tego używa się przestrzeni nazw VML oraz oddzielnego procesora VML zaimplementowanego jako zachowanie Explorera (czyli zewnętrzny moduł kodu). Z wektorowym językiem znaczników pobieżnie zapoznaliśmy się w rozdziale 1, teraz przyjrzymy mu się dokładniej.

<HTML xmlns:v="urn:schemas-microsoft-com:vml">

 

  <HEAD>

    <TITLE>

      Użycie Wektorowego języka znaczników VML

    </TITLE>

 

    <STYLE>

      v\:* {behavior: url(#default#VML);}

    </STYLE>

  </HEAD>

 

  <BODY>

    <CENTER>

      <H1>

        Użycie Wektorowego języka znaczników

      </H1>

    </CENTER>

    <P>

      <v:oval STYLE='width:100pt; height:75pt'

              fillcolor="yellow" />

    <P>

      <v:rect STYLE='width:100pt; height:75pt' fillcolor="blue"

              strokecolor="red" STROKEWEIGHT="2pt" />

    <P>

      <v:polyline

         POINTS="20pt,55pt,100pt,-10pt,180pt,65pt,260pt,25pt"

         strokecolor="red" STROKEWEIGHT="2pt" />

  </BODY>

</HTML>

Zachowania Internet Explorera

Więcej o zachowaniach Internet Explorera będących jedną z technik Microsoftu zmierzających do rozdzielenia znaczników od treści dokumentu znajdziesz pod adresem http://msdn.microsoft.com/workshop/c-frame.htm#/workshop/author/default.asp.

Nasz przykładowy dokument spowoduje wykreślenie kilku figur – obejrzyj rysunek 11.1.

Rysunek 11.1.

Przykładowa strona VML

Teraz VML omówimy dokładnie, zaczniemy od powiedzenia paru słów o składni tego dokumentu.

Tworzenie dokumentów VML

W Internet Explorerze VML zanurza się w dokumentach HTML. Zaczyna się od zadeklarowania przestrzeni nazw v:

<HTML xmlns:v="urn:schemas-microsoft-com:vml">

Konieczne jest także uruchomienie procesora VML zaimplementowanego jako zachowanie Explorera. W tym celu używa się znacznika <STYLE> łącząc przestrzeń nazw v z domyślnym zachowaniem VML:

<HTML xmlns:v="urn:schemas-microsoft-com:vml">

 

  <HEAD>

    <TITLE>

      Użycie Wektorowego języka znaczników VML

    </TITLE>

 

    <STYLE>

      v\:* {behavior: url(#default#VML);}

    </STYLE>

  </HEAD>

  .

  .

  .

W ten sposób Internet Explorer został już poinformowany, że elementy VML (z przestrzeni nazw v) występujące w tym dokumencie mają być przetwarzane przez procesor VML. Teraz można do dokumentu dodawać elementy takie jak oval (umieszczając je w przestrzeni nazw v):

<HTML xmlns:v="urn:schemas-microsoft-com:vml">

 

  <HEAD>

    <TITLE>

      Użycie Wektorowego języka znaczników VML

    </TITLE>

 

    <STYLE>

      v\:* {behavior: url(#default#VML);}

    </STYLE>

  </HEAD>

 

  <BODY>

    <CENTER>

      <H1>

        Użycie Wektorowego języka znaczników

      </H1>

    </CENTER>

    <P>

      <v:oval STYLE='width:100pt; height:75pt'

              fillcolor="yellow" />

    <P>

      <v:rect STYLE='width:100pt; height:75pt' fillcolor="blue"

              strokecolor="red" STROKEWEIGHT="2pt" />

    <P>

      <v:polyline

         POINTS="20pt,55pt,100pt,-10pt,180pt,65pt,260pt,25pt"

         strokecolor="red" STROKEWEIGHT="2pt" />

  </BODY>

</HTML>

Następnie przyjrzymy się wszystkim elementom dostępnym w języku VML.

Elementy VML

W VML zdefiniowano dwadzieścia elementów pokazanych w tabeli 11.1.

Tabela 11.1.
Elementy VML

Element

Opis

arc

Wykreśla łuk.

background

Dodaje tło.

curve

Wykreśla krzywą.

fill

Wypełnia figurę.

formulas

Określa wzór umożliwiający skalowanie figur.

group

Grupuje figury.

handles

Wykreśla uchwyty figur.

image

Obsługuje obrazki.

imagedata

Opisuje dane obrazka, który ma być umieszczony na figurze.

line

Wykreśla linię.

oval

Wykreśla elipsę.

path

Określa ścieżkę do renderingu.

polyline

Wykreśla łamaną.

roundrect

Wykreśla prostokąt z zaokrąglonymi rogami.

shadow

Dodaje do figury cień.

shape

Tworzy figurę podstawową.

shapetype

Definiuje figurę wielokrotnego użytku.

stroke

Określa sposób wykreślania ścieżki.

textbox

Tworzy okienko tekstowe.

textpath

Określa ścieżkę, wzdłuż której ma być wykreślany tekst.

Ogólna struktura VML oparta jest na dwóch podstawowych elementach: shape oraz group. Pierwszy z nich jest podstawowym elementem VML i używa się go do definiowania ogólnie pojętych figur graficznych. group pozwala grupować zestawy figur, aby były traktowane jako całość.

W VML zdefiniowano także szereg dodatkowych elementów najwyższego poziomu, które usprawnić mają obsługę złożonych informacji graficznych, można na przykłady użyć elementu shapetype do zdefiniowania figury i następnie do takiej definicji się odwoływać w elemencie shape uzyskując wiele kopii takiego samego fragmentu rysunku.

Można też użyć szereg predefiniowanych figur opartych na elemencie shape. Użycie figur predefiniowanych oznacza, że nie jest konieczne ich definiowanie. Do takich figur należą line, polyline, curve, rect, roundrect, oval, arc i image.

Atrybuty wspólne

W informacji o VML wysłanej W3C znajdziesz fragmenty DTD tego języka (ale tylko fragmenty). Dwiema ważnymi częściami są encje parametryczne coreattrs i shapeattrs definiujące listy atrybutów, których używa wiele z omawianych w tym rozdziale elementów. Oto definicja encji coreattrs:

<!entity %coreattrs

id id #implied -- identyfikator niepowtarzalny w dokumencie --

class cdata #imlied -- lista klas rozdzielanych spacjami --

style cdata #imlied -- przypisane dane stylu --

title cdata #implied -- pomocniczy tytuł lub opis --

href cdata #implied -- URL wywoływany przy kliknięciu elementu --

target cdata #implied -- docelowa ramka dla href --

alt cdata #implied -- tekst, gdy nie można wyświetlić elementu --

coordsize cdata #implied -- wielkość współrzędnych w elemencie --

coordorigin cdata #implied -- współrzędne lewego górnego rogu --

wrapcoords cdata #implied -- do użycia przy przepełnieniu tekstem linii --

...

Zgłoś jeśli naruszono regulamin