Klucz dostępu n przeskakuje w nawigacji strony. Przejdź do początku.
Ten dokument jest tłumaczeniem. W przypadku rozbieżności i błędów aktualna wersja angielska powinna być uznana za autorytatywną. Pierwotne prawa autorskie należą do W3C jak wykazano poniżej.
Tłumacz: Andrew Osobka, Natalia Fabisz, Angielski Team
Potencjalni odbiorcy: developerzy schematów (DTDs, XML Schema, RelaxNG, etc.)
Kiedy należy stosować xml:lang, a kiedy definiować własny element lub atrybut przekazujący wartość języka w schematach dokumentów XML (DTD)?
Czasami dokumenty zawierają w sobie szereg różnych języków. Czasami język jest przekazywany jako dane lub jako metadata do elementów
będących poza dokumentem. Ponieważ zastosownia te posiadają podobny format, dweloperzy schematów często mają problem, czy powinno się zastosować
xml:lang
, czy zdefiniować własny element lub atrybut odnoszący się do języka.
Na przykład: w XHTML 1.0 istnieje atrybut hreflang
w elemencie a
oraz xml:lang
(lub atrybut lang
w przypadku HTML 4.0) dla treści elementu:
<a xml:lang="en" href="xyz" hreflang="de">Click for German</a>
Atrybut xml:lang
opisuje język zawarty w elemencie ("Click for German"), podczas gdy atrybut hreflang
jest metadaną, w tym przypadku opisującą język treści, do której prowadzi odnośnik.
xml:lang
Treść, która jest bezpośrdnio powiązana z dokumentem XML (zawarta w dokumencie lub uważana za część dokumentu po przetworzeniu)
powinna używać atrybutu xml:lang
określającego język. Atrybut ten powinnien być zarezerwowany do określenia języka treści dostarczanej przez
autora.
Atrybut xml:lang jest zdefiniowany przez XML 1.0 jako atrybut używany do określania języka treści elementu HTML, włącznie z tekstem i innym typem treści (np: obrazy i pliki dźwiękowe), który znajduje się w elemencie. Wartość xml:lang odnosi się do podelementów, jak również do atrybutów powiązanych z elementem i podelementami (chociaż stosowanie języka naturalnego w atrybutach nie jest najlepszą praktyką). Wartością atrybutu xml:lang jest znacznik języka zdefiniowany przez RFC 3066 lub wersje późniejsze.
Np.: xml:lang w elemencie t:
<t xml:lang="pl"> Ten tekst jest zawarty w elemencie 't'.Zastosowanie atrybutu xml:lang wskazuje język, po to, żeby np.: zastosować odpowiednią czcionkę lub słownik podczas przeglądania dokumentu. Gdyby nie było atrybutu xml:lang, można mieć problemy z osadzonom treścią taką jak np.: fraza <span xml:lang="fr">C'est la vie</span>, która jest napisana w innym języku. </t>
Poniższy przykład pokazuje jak xml:lang jest zastosowany w innym przypadku:
<para>Il faut utiliser <abbr title="Simple Object Access Protocol"
xml:lang="en">SOAP</abbr></para>
Kiedy wartość języka jest atrybutem lub metadaną treści, która jest z poza dokumentu, nie należy stosować
xml:lang
. W takich przypadkach informacje na temat języka mogą być zachowane w dokumencie, ale informacje te nie odnoszą się do treści samego
dokumentu XML (w tym obrazów, które są przetwarzane jako część dokumentu). W takim przypadku należy zdefiniować element lub atrybut inną nazwą, nie
stosując atrybutu xml:lang. Wartość elementu lub atrybutu powinna stosować BCP 47 (lub wersje późniejsze) tak jak w
przypadku xml:lang.
Oto kilka przykładów:
Powodem, dla którego należy stworzyć własny element (lub atrybut) jest przekazanie języka jako wartości (jako części struktury danych lub metadanych na temat dokumentu zewnętrznego) a nie do określenia języka konkretnego kawałka tekstu. Unikanie użycia xml:lang do opisu wartości dotyczących języka dokumentów zewnętrznych pozwala autorom na uniknięcie problemów związanych z etykietowaniem przetwarzanych treści.
Na przykład: dokument XML może wyglądać następująco:
<item type="DVD"> <title xml:lang="fr">Cyrano de Bergerac</title> <!-- wskazuje na język tytułu filmu --> <runningTime value="137" /> <!-- język nie ma znaczenia w tym przypadku --> <dialogue>en</dialogue> <!-- wskazuje na język dialogów --> <subtitles track="1" language="zh-Hant" /> <!-- pokazuje napisy w chińskim --> <subtitles track="2" language="zh-Hans" /> </item>
W powyższym przykładzie atrybut the xml:lang przekazuje informacje na temat języka tekstu, który pojawia się w
dokumencie. Element dialogue
i atrybut language
są zdefiniowane w schemacie dokumentów XML i pokazują język odpowiedni dla danych pozycji.
Na przykład: 'language' przekazuje informacje, że napisy w Track #1 są napisane w języku chińskim ("zh-Hant").
Ważnym jest aby pamiętać, że xml:lang ma swój zasięg: elementy niższego rzędu dziedziczą atrybut języka. Można wykorzystać to w wielu przypadkach (bez umieszczania zbędnych znaczników na każdym elemencie). Na przykład: dobrą praktyką jest umieszczanie xml:lang w elemencie html na początku dokumentu XHTML i używać go jedynie wtedy, gdy zmienia się język dokumentu. Więcej informacji na ten temat w artykule: Language tags in HTML and XML.
Stosowanie xml:lang na atrybucie jest problematyczne, ponieważ nie można:
<p title="French (français)">Bonjour</p>
oddzielić języka używanego w atrybucie od języka używanego w elemencie.
<a title="anglais" href="qa-when-xmllang.en.html" lang="en"
xml:lang="en">English</a>
Proszę zauważyć, że trzy języki schematów (XML DTD, XML Schema oraz RELAX NG) różnią się co do tego, czy użytkownik powinien zdefiniować
xml:lang
zanim zacznie go stosować jako atrybut. W szczególności:
XML DTDs wymagają, aby każdy element używający xml:lang
jako atrybutu był deklarowany w DTD
XML Schema wymaga aby deklarować i importować xml namespace zanim użyje się xml:lang
(i inne wartości xml namespace)
RELAX NG deklaruje xml namespace, jak w XML, co sprawaia, że dodatkowa deklaracja jest niepotrzebna.
Powiedz nam co myślisz (po angielsku).
Prenumeruj kanał RSS.
Twitter (Wiadomość ze strony głównej)
Angielska wersja dokumentu z dnia 2005-11-24. Tłumaczenie wykonano dnia 2012-08-20 20:01 GMT
Historia zmian dokumentu qa-when-xmllang w blogu i18n.
Copyright © 2005-2012 W3C® (MIT, ERCIM, Keio, Beihang), All Rights Reserved. W3C liability, trademark, document use and software licensing rules apply. Your interactions with this site are in accordance with our public and Member privacy statements.