W3C

Беларускі пераклад "HTML and XHTML Frequently Answered Questions"

Дадзены дакумент з'яўляецца перакладам артыкула "HTML and XHTML Frequently Answered Questions".
Арыгінальная версія якога існуе толькі на сайце W3C http://www.w3.org/MarkUp/2004/xhtml-faq
Дадзены пераклад не з'яўляецца афіцыйным дакументам W3C.
Усе Аўтарскія Правы Належаць W3C.
Дадзены дакумент можа ўтрымоўваць памылкі перакладу і памылкі друку.

Аўтар: Аляксей Пятроў ( усе пераклады ) Дзякуй за падтрымку: Чорны квадрат

Адказы на часта зададзеныя пытанні па XHTML і HTML

Рэдактар: Steven Pemberton, W3C/CWI

Дата версіі: 21 ліпеня 2004

Іншае якое адносіцца да FAQs:

Каментары і прапановы па ўтрыманні гэтага дакумента накіроўвайце на email www-html-editor@w3.org, у тэме паведамлення пакажыце «FAQ».

Утрыманне

  1. Навошта патрэбен XHTML? Ці не досыць HTML?
  2. У чым перавагі XHTML перад HTML?
  3. Ці можна проста дадаць аб'яву XML у пачатак наяўнага дакумента HTML? Ці можна змешваць код HTML 4.01 і XHTML?
  4. Як прасцей усяго пераўтварыць дакументы HTML у XHTML?
  5. Чаму распрацоўнікі браўзэраў так мітусяцца з XML? Ці не лепш для браўзэраў працаваць з HTML?
  6. Навошта мне турбавацца аб пэўнасці кода HTML? У маім браўзэры дакумент адлюстроўваецца дакладна.
  7. Як мага праверыць карэктнасць разметкі ў дакуменце?
  8. Чаму вы не заўсёды выкарыстаеце тэрмін «карыстацкі агент» («user agent») замест «браўзэр»?
  9. Для чаго трэба выкарыстаць імянныя прасторы (namespace) у XHTML?
  10. Чаму дакументы XHTML 1.0 не варта адпраўляць як text/html?
  11. Якія браўзэры прымаюць тып дадзеных application/xhtml+xml?
  12. Ці прымае Microsoft Internet Explorer тып application/xhtml+xml?
  13. У CSS ёсць правілы, якія ставяцца толькі да HTML. Ці ўжываюцца гэтыя правілы да XHTML?
  14. Ці працуе document.write у XHTML?
  15. Чаму нельга перадаваць дакументы XHTML 1.1 у якасці text/html?
  16. Чаму з XHTML 1.1 быў ліквідаваны атрыбут target?
  17. Для чаго выкарыстоўваецца мадулярызацыя «Modularization» XHTML?
  18. Навошта патрэбен XHTML 2? Ці не досыць XHTML 1?
  19. Ці будзе ў XHTML 2 элемент <img> заменены элементам <object> ?
  20. Чаму XHTML 2 не выкарыстае XLink?
  21. Чаму ў XHTML 2 няма сумяшчальнасці са старымі версіямі XHTML?
  22. Чаму атрыбут xml:space усталяваны як 'preserve' для ўсіх элементаў XHTML 2? Я не жадаю бачыць у выснове браўзэра дадатковыя прабелы.

Навошта патрэбен XHTML? Ці не досыць HTML?

HTML — магчыма, самая папулярная ў свеце мова разметкі дакументаў. З з'яўленнем XML было арганізавана абмеркаванне, ці патрэбна новая версія HTML у рамках XML. Удзельнікі адказалі адназначна «так»: версія HTML, заснаваная на XML, дазволіць выкарыстаць элементы XHTML у іншых мовах XML, а дакументы XHTML змогуць выкарыстаць элементы іншых моў XML. Акрамя таго, будзе магчымым прывесці ў парадак HTML, ліквідаваўшы яго самыя «неахайныя» элементы і пашырыўшы яго функцыянальнасць, напрыклад, палепшанай рэалізацыяй форм.

У чым перавагі XHTML перад HTML?

Калі дакумент складае прастой XHTML 1.0 (без выкарыстання іншых моў разметкі), то вы не зазначыце істотнай розніцы. Аднак с цякам часу даступнымі становяцца ўсё больш і больш прылад, заснаваных на XML (такіх як XSLT для ператварэння дакументаў) і вы рана або позна зазначыце перавагі выкарыстання XHTML. Напрыклад, тэхналогія XForms дазволіць вам рэдагаваць дакументы XHTML (і любыя іншыя дакументы XML). Прыкладанні Семантычнай Сеткі (Semantic Web) будуць здольныя выкарыстаць перавагі XHTML.

Калі дакумент утрымоўвае штосьці большае, чым XHTML 1.0, напрыклад, уключэнні моў MathML, SMIL, SVG, то перавагі ў наяўнасці - вы бы не змаглі выкарыстаць гэтыя тэхналогіі з HTML.

Ці можна проста дадаць аб'яву XML у пачатак наяўнага дакумента HTML? Ці можна змешваць код HTML 4.01 і XHTML?

Не. Фармат HTML не заснаваны на XML. Каб інтэрпрэтаваць дадзеныя як XML, вы павінны занесці неабходныя змены, каб зрабіць код дакумента дакладным кодам XML.

Як прасцей усяго пераўтварыць дакументы HTML у XHTML?

HTML Tidy дазваляе атрымаць XHTML з кода HTML. Amaya - браўзэр і вэб-рэдактар, які захоўвае HTML дакументы ў фармаце XHTML.

Чаму распрацоўнікі браўзэраў так мітусяцца з XML? Ці не лепш для браўзэраў працаваць з HTML?

XML уводзіць стражэйшыя правілы апрацоўкі дакументаў. Браўзэры HTML працуюць з любымі ўваходнымі дадзенымі, карэктнымі і некарэктнымі, і спрабуюць іх інтэрпрэтаваць. Схема апрацоўкі памылак вельмі ўскладняе распрацоўку праграм, асабліва калі ўлічыць, што мяркуецца, што рэакцыя ўсіх браўзэраў на некарэктныя дадзеныя павінна быць аднолькавай. Акрамя таго, гэта азначае, што вялізны лік дакументаў HTML утрымоўваюць памылкі, але нармалёва адлюстроўваюцца браўзэрамі, і аўтары не падазраюць аб тым, што код HTML некарэктны. Вось чаму складана стварыць новы карыстацкі агент, пакуль дакументы, якія выдаюцца за HTML, часта вельмі дрэнныя.

Навошта мне турбавацца аб пэўнасці кода HTML? У маім браўзэры дакумент адлюстроўваецца дакладна.

Усе браўзэры здольныя апрацоўваць дакладны код HTML. Але калі код няверны, браўзэр уносіць выпраўленні; бо розныя браўзэры па-рознаму апрацоўваюць памылкі, гэта прыводзіць да таго, што дакумент па-рознаму выглядае ў розных браўзэрах. Браўзэраў існуе сотні, іх колькасць расце (не толькі для ПК, але і для КПК, мабільных тэлефонаў, тэлевізараў, друкарак і нават халадзільнікаў), пратэставаць дакумент на ўсіх браўзэрах немагчыма. Калі ваш дакумент утрымоўвае памылкі і няправільна адлюстроўваецца ў пэўным браўзэры, гэта ваша віна, але калі код HTML карэктны, то няслушнае адлюстраванне ўжо на сумленні распрацоўнікаў праграмы.

Як мага праверыць карэктнасць разметкі ў дакуменце?

W3C падае для гэтага сэрвіс "валідатар": http://validator.w3.org/. Браўзэр Amaya паведамляе, ці дакладны код адлюстраваных дакументаў.

Чаму вы не заўсёды выкарыстаеце тэрмін «карыстацкі агент» («user agent») замест «браўзэр»?

У той час як браўзэры з'яўляюцца важнымі карыстачамі HTML і XHTML, існуе шмат іншых праграм і сістэм, якія выкарыстаюць (X)HTML дакументы. Пошукавыя машыны, напрыклад, счытваюць дакументы, хоць і не ставяцца да браўзэраў. Выкарыстаючы тэрмін «карыстацкі агент», мы імкнемся падкрэсліць розніцу.

Напрыклад, зрабіўшы запыт пошукавіку Google, у выніках пошуку разам са спасылкай можна ўбачыць тэкст «вэб-старонка выкарыстае фрэймы, але ваш браўзэр не падтрымлівае іх» некаторыя людзі ігнаруюць такія спасылкі. Стваральнікі такіх сайтаў не ўяўляюць сабе, што кантэнт патрабуецца не адным толькі браўзэрам, і што элемент <noframes> павінен утрымоўваць больш прадбачлівы тэкст, які не выглядае гэтак глупа ў вачах людзей, выкарыстоўвалых пошук.

Для чаго трэба выкарыстаць імянныя прасторы (namespace) у XHTML?

У час станаўлення HTML розныя групы і кампаніі дадавалі па сваім жаданні новыя элементы і атрыбуты ў HTML. Гэта пагражала блытанінай з версіямі HTML, якія не з'яўляюцца агульнапрынятымі. XML («X» азначае «пашыраецца», «Extensible») дазваляе ўсім выкарыстаць элементы з розных моў, але браўзэр або іншы карыстацкі агент павінен неяк вызначаць, да якой мовы ставіцца той або іншы элемент. Для гэтага і патрабуюцца аб'явы імянных прастор (namespace).

Чаму дакументы XHTML 1.0 не варта адпраўляць як text/html?

XHTML мае фармат XML; гэта азначае, што тып дадзеных дакумента XHTML павінен суадносіцца з XML (application/xhtml+xml, application/xml, or text/xml). Аднак XHTML 1.0 ствараўся такім чынам, каб дакументы маглі дакладна адлюстроўвацца карыстацкімі агентамі HTML. Калі вы рушыце ўслед некалькім простым правілам, дакументы XHTML 1.0 будуць падыходзіць для браўзэраў HTML. Але, паколькі апошнія працуюць толькі з тыпам дадзеных text/html, вам неабходна перадаваць XHTML 1.0 як text/html, каб забяспечыць сумяшчальнасць з састарэлым праграмным забеспячэннем. Але ведайце: дакумент з загалоўкам text/html заўсёды будзе апрацоўвацца як прастой HTML, а не XHTML.

Якія браўзэры прымаюць тып дадзеных application/xhtml+xml?

Вядомыя нам браўзэры — усё заснаваныя на Mozilla (Mozilla, Netscape 5+, Galeon, Firefox), Opera, Amaya, Camino, Chimera, DocZilla, iCab, Safari, плюс усё праграмнае забеспячэнне для мабільных тэлефонаў, якія працуюць з WAP2. Фактычна, любы сучасны браўзэр павінен прымаць тып дадзеных application/xml. Звярніціся к тэсту XHTML Media-type test за падрабязнасцямі.

Ці прымае Microsoft Internet Explorer тып application/xhtml+xml?

Не, але ёсць выкрут, якая дазволіць перадаваць XHTML1.0 для Internet Explorer у якасці application/xml.

Дадайце ў пачатак дакумента вылучаны ніжэй радок:

<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="copy.xsl"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>

файл copy.xsl павінен утрымоўваць такі код::

<stylesheet version="1.0"
     xmlns="http://www.w3.org/1999/XSL/Transform">
    <template match="/">
        <copy-of select="."/>
    </template>
</stylesheet>

Файл павінен утрымоўвацца на тым жа сайце, з якога перадаецца дакумент.

Вы перадаеце дакумент як XML, ён праходзіць апрацоўку, у падрахунку браўзэр лічыць, што атрыманы text/html, такім чынам, карыстаючыся прыведзенай радай, вы павінны ўлічваць усе правілы, якія патрабуюцца для забеспячэння сумяшчальнасці XHTML 1.0 з браўзэрамі HTML.

Дакумент будзе працаваць для браўзэраў, якія прымаюць XHTML 1.0 як application/xml.

У CSS ёсць правілы, якія ставяцца толькі да HTML. Ці ўжываюцца гэтыя правілы да XHTML?

Не. Правілы CSS, якія адносяцца толькі да HTML, ужываюцца толькі да дакументаў, перададзеным як text/html.

Ці працуе document.write у XHTML?

Не. Сама сутнасць XML мяркуе, што немагчыма генераваць разметку скрыптамі, у тый час як парсер яшчэ апрацоўвае разметку.

Можна дамагчыся таго жа эфекту, што і document.write, але для дадання і выдалення элементаў трэба выкарыстаць DOM.

Чаму нельга перадаваць дакументы XHTML 1.1 у якасці text/html?

XHTML 1.1 уяўляе сабою звычайны XML, прызначаны толькі для апрацоўкі ў якасці XML. XHTML 1.1 нельга перадаваць браўзэрам HTML. Таму дакументы XHTML 1.1 абавязкова павінны перадавацца з тыпам дадзеных, якія адносяцца да XML, такім як application/xhtml+xml.

Чаму з XHTML 1.1 быў ліквідаваны атрыбут target?

Атрыбут target не ліквідаваўся з XHTML 1.1. XHTML 1.0 падпадзяляецца на тры розныя версіі: strict, transitional і frameset. Усе разнавіднасці забяспечваюць такую сумяшчальнасць з HTML 4.01, якую толькі дазваляе XML. XHTML 1.1 — абноўленая версія XHTML 1.0 strict, а атрыбуту target не было ні ў адной версіі HTML strict. Іншыя версіі, transitional і frameset, не былі абноўлены, бо ў гэтым няма неабходнасці. Калі вы жадаеце выкарыстаць атрыбут target выкарыстайце XHTML 1.0 transitional.

Для чаго выкарыстоўваецца мадулярызацыя «Modularization» XHTML?

Мадулярызацыя XHTML (Modularization) прызначана для ўжывання распрацоўнікамі моў, заснаваных на XHTML, але не карыстачамі моў. Кампаніі і групы часта распрацоўваюць уласныя версіі HTML і XHTML, якія не сумяшчальны паміж сабою. Мадулярызацыя падзяляе XHTML на модулі, якія могуць па асобнасці выкарыстоўвацца пры азначэнні новай мовы; так, напрыклад, любая версія мовы, выкарыстоўвалая табліцы, будзе працаваць з адзіным для XHTML азначэннем табліц. Акрамя таго, мадулярызацыя растлумачвае, у якіх выпадках можна дадаваць новыя элементы, а ў якіх — не.

Навошта патрэбен XHTML 2? Ці не досыць XHTML 1?

HTML і XHTML выканалі ўскладзеныя на іх задачы, але ў гэтых мовах ёсць мноства элементаў, якія трэба палепшыць. У XHTML 2 адмысловая ўвага нададзена паляпшэнню магчымасцяў структуравання, выдаленню элементаў, якія ўжо ёсць у XML, выгодзе выкарыстання (usability), даступнасці (accessibility), інтэрнацыяналізацыі, апаратнай незалежнасці, палепшанаму механізму форм, ухіленню неабходнасці ў выкарыстанні скрыптавання.

Ці будзе ў XHTML 2 элемент <img> заменены элементам <object> ?

Не. Элемент <img> будзе заменены ў XHTML 2, але чымсьці іншым (хоць вы можаце выкарыстаць і<object> калі жадаеце).

Дызайн <img> у HTML мае шмат недахопаў:

У XHTML 2 малюнкі прыраўноўваюцца да складнікаў кантэнту, гэта здзяйсняецца прысвойваннем уласцівасці src любому элементу. Калі малюнак даступны і браўзэр можа яго апрацаваць, графіка будзе скарыстана, інакш браўзэр будзе выкарыстаць змесціва элемента. Напрыклад:

<p src="map.png">Выхад са станцыі, звярніцеся налева,
   падніміцеся па прыступках на<strong>Верхнюю Вуліцу</strong>,
   і звярніце направа</p>

Перавага гэтага ў тым, што ў выпадку, калі малюнак недаступны (да прыкладу, з-за памылак у сеткі) або не можа быць апрацаваны браўзэрам, дакумент застаецца даступным. Калі патрабуецца выкарыстаць больш аднаго малюнку, код будзе выглядаць так:

<p src="map.png"><span src="map.gif">Выхад са станцыі...</span></p>

вядома, лепш выкарыстаць тэхналогію content negotiation, калі яе падтрымлівае ваш сервер:

<p src="map">Выхад са станцыі...</p>

У такім разе, сервер «дамаўляецца» з браўзэрам, які фармат графікі перадаць праграме. Калі даступных малюнкаў няма, будзе скарыстана змесціва элемента. Гэта дазваляе дадаць малюнкі асобнага фармату пазней, не змяняючы код старонак.

XLink і XHTML маюць розныя патрабаванні для выкарыстання спасылак, і гэтыя патрабаванні не сумяшчальны.

Чаму ў XHTML 2 няма сумяшчальнасці са старымі версіямі XHTML?

Сумяшчальнасць ёсць, але яна рэалізаваная інакш, чым раней.

Раннія версіі HTML былі мовамі для пэўнай вобласці ўжывання (якія не суадносіцца з нейкай агульнай прыладай разметкі), таму было важна падтрымліваць сумяшчальнасць, так каб старыя браўзэры карэктна ўспрымалі дакументы. Напрыклад, па гэтым чынніку элемент<meta> утрымоўвае дадзеныя ў сваім атрыбуце, а не ў якасці свайго змесціва — так забяспечана сумяшчальнасць з ранейшым праграмным забеспячэннем.

Аднак дзякуючы XML і табліцам стыляў, такі строгі механізм сумяшчальнасці больш не патрэбен, бо браўзэр XML (на момант напісання гэтага тэксту 95% браўзэраў прымаюць XML) можа апрацоўваць новую мову без абнаўлення. Шматлікія магчымасці XHTML 2 ужо даступны ў сучасных браўзэрах, зробленых не адмыслова для XHTML 2. Шматлікае працуе, але не ўсё: калі формы і табліцы былі дададзены ў HTML, людзям прыйшлося пачакаць з'яўлення новых браўзэраў; сапраўды гэтак жа адмысловыя элементы XHTML 2, такія як XForms і XML Events, патрабуюць ад праграмнага забеспячэння разумення іх функцыянальнасці.

Чаму атрыбут xml:space усталяваны як 'preserve' для ўсіх элементаў XHTML 2? Я не жадаю бачыць у выснове браўзэра дадатковыя прабелы.

Атрыбут xml:space звязан з уводам: ён патрабуецца, каб кантраляваць, ці будуць прабелы прадстаўлены ў DOM (т.е. ва ўнутранай версіі дакумента, з якой працуе браўзэр); гэта не ставіцца да канчатковага адлюстравання дакументаў. Выснова прабельных знакаў усталёўваецца уласцівасцю CSS 'whitespace'. Прысвойце яму значэнне 'pre' каб усе пробельные знакі DOM былі бачны пры выснове; значэнне 'normal' схавае прабельныя знакі (CSS 3 будзе ўтрымоўваць багацейшыя сродкі кантролю высновы).

Менавіта таму для ўсіх элементаў XHTML усталявана xml:space="preserve" інакш бы ўласцівасць 'whitespace' не мела дзеяння. Табліца стыляў па змаўчанні ўсталёўвае 'whitespace' значэнне 'normal' для ўсіх элементаў, акрамя <pre>, але вы можаце гэта змяніць у сваіх табліцах.