Андрей Шитов
13 января 2006 |
|
Задача. | На реальных примерах показать, почему телефонные номера удобнее записывать в виде XML. | ||
На сайтах, созданных с применением XSLT, содержимое страниц обычно хранят в виде
Историческое отступление |
В качестве иллюстрации посмотрим на телефонный код, выделенный Украине. Одни источники приводят код 38, другие (как правило, зарубежные) 380. Даже на сайтах «Ростелекома» и МГТС разные данные. Люди иногда спорят, но ответ вполне можно найти, если покопаться в Официальный международный код Украины — 380. Он был введен в действие 16 апреля 1995 года, о чем сообщается в бюллетене МСЭ № 590. Там же приведен пример набора киевского номера до (+7 044 XXXXXXX) и после (+380 44 XXXXXXX) указанной даты. Когда Украина пользовалась кодом СССР (7), из Москвы в Киев можно было позвонить, набрав 8 044, то есть так же, как и в любой другой город на территории СССР. При этом коды всех украинских городов начинались c нуля. А теперь нуль оказывается то последней цифрой в коде страны, то первой в коде города. Интересно, что такая проблема коснулась не только замены кода 7 в бывших союзных республиках. Желающим предлагаю ознакомиться с таблицей A reference scenario for moving to an open and unified European numbering environment в приложении 5 документа Green paper on a numbering policy for telecommunications services in Europe. На сайте Министерства транспорта и связи Украины 18 апреля 2005 года было опубликовано сообщение о десятилетии введения международного кода 380. К сожалению, от новости остались только заголовок в кеше Гугла и перепечатанный текст на сайте «Портал 2000». |
На одном из сайтов, который сделан в студии, принят такой формат записи телефонных номеров в XML-коде: <phone country="7" city="495">5401800</phone>. Если подряд идут несколько номеров, они записаны в единой группе:
|
Обратите внимание на отсутствие дефисов в номерах. Оформление номера (расстановка скобок и дефисов) полностью определено правилами в XSLT-шаблоне. Польза от применения XML еще и в том, что теперь нетрудно изменить формат отображения номеров на всем сайте, исправив лишь один фрагмент в XSLT.
Менее очевидное преимущество — легкость замены кодов городов и стран. Когда у Москвы сменился код (вместо 095 стал 495), правки достаточно было сделать лишь в XSLT. Так же просто было изменить отображение номеров, когда 28 февраля 2004 года в Екатеринбурге ввели семизначную нумерацию (вместо шестизначной), заменив попутно и код города (343 вместо 3432). Правила изменения екатеринбургских номеров четко определены и легко поддаются автоматизации.
При таком прямолинейном решении возникает противоречие: например, в старом XML-файле записано city="095", а на выходе появляется (495). Чтобы избежать этого, достаточно указывать не цифровые коды, а названия городов и стран. Например: <phone country="russia" city="moscow">5401800</phone>, хотя это потребует дополнительных затрат на создание списка кодов.
Само XSLT-преобразование настолько простое, что его создание предлагается читателю в качестве упражнения.
Геотаргетинг (geotargeting) — замечательная вещь, если в вашем распоряжении есть база распределения
Один и тот же телефонный номер следует показывать
© 19952024 Студия Артемия Лебедева
|