Определение типа документа (DTD). Языки описания cхем XML

Определение типов документа (DTD) декларирует допустимые строительные блоки XML документа. Оно задает структуру документа со списком допустимых элементов и атрибутов.

DTD может декларироваться как в коде самого XML документа, так и во внешнем файле с подключением его к XML документу.

Внутренняя декларация DTD

Если DTD декларируется внутри XML файла, то она должны быть заключена в специальный тег декларации DOCTYPE , который имеет следующий синтаксис:

Пример XML документа с внутренним DTD:

]> Tove Jani Напоминание Не забудь обо мне в эти выходные

DTD в приведенном примере интерпретируется следующим образом:

  • !DOCTYPE note определяет, что корневым элементом документа является note
  • !ELEMENT note определяет, что элемент note содержит четыре элемента: to, from, heading, body
  • !ELEMENT to определяет, что элемент to должен быть
  • !ELEMENT from определяет, что элемент from должен быть типа "#PCDATA"
  • !ELEMENT heading определяет, что элемент heading должен быть типа "#PCDATA"
  • !ELEMENT body определяет, что элемент body должен быть типа "#PCDATA"

Внешняя декларация DTD

Если DTD декларируется во внешнем файле, то подключение осуществляется следующим образом:

Ниже приводится тот же XML документ, что и ранее, но с внешней декларацией DTD:

Tove Jani Напоминание Не забудь обо мне в выходные

А вот что содержится в файле "note.dtd", который декларирует DTD:

Для чего используют DTD?

С DTD каждый ваш XML файл может нести описание своего собственного формата.

С DTD различные, не связанные друг с другом, группы людей могут приходить к соглашению о стандартах взаимно обмениваемых данных.

С DTD вы можете быть уверены, что получаемые из внешних источников данные будут корректными.

Также, вы можете использовать DTD, чтобы проводит проверки корректности своих собственных данных.

В XML - документах DTD определяет набор действительных элементов, идентифицирует элементы, которые могут находиться в других элементах, и определяет действительные атрибуты для каждого из них. Синтаксис DTD весьма своеобразен и от автора-разработчика требуются дополнительные усилия при создании таких документов(сложность DTD является одной из причин того, что использование SGML , требующего определение DTD для любого документа, не получило столь широкого распространения как, например, HTML ). Как уже отмечалось, в XML использовать DTD не обязательно - документы, созданные без этих правил, будут правильно обрабатываться программой-анализатором, если они удовлетворяют основным требованиям синтаксиса XML . Однако контроль за типами элементов и корректностью отношений между ними в этом случае будет полностью возлагаться на автора документа. До тех пор, пока грамматика нашего нового языка не описана, его сможем использовать только мы, и для этого мы будем вынуждены применять специально разработанное программное обеспечение, а не универсальные программы-анализаторы..

В DTD для XML используются следующие типы правил: правила для элементов и их атрибутов, описания категорий(макроопределений), описание форматов бинарных данных. Все они описывают основные конструкции языка - элементы, атрибуты, символьные константы внешние файлы бинарных данных.

Для того, чтобы использовать DTD в нашем документе, мы можем или описать его во внешнем файле и при описании DTD просто указать ссылку на этот файл или же непосредственно внутри самого документа выделить область, в которой определить нужные правила. В первом случае в документе указывается имя файла, содержащего DTD - описания:

...

Внутри же документа DTD- декларации включаются следующим образом:

... ... ]> ...

В том случае, если используются одновременно внутренние и внешние описания, то программой-анализатором будут сначала рассматриваться внутренние, т.е. их приоритет выше. При проверке документа XML - процессор в первую очередь ищет DTD внутри документа. Если правила внутри документа не определены и не задан атрибут standalone ="yes" , то программа загрузит указанный внешний файл и правила, находящиеся в нем, будут считаны оттуда. Если же атрибут standalone имеет значение "yes" , то использование внешних DTD описаний будет запрещено.

Определение элемента

Элемент в DTD определяется с помощью дескриптора!ELEMENT , в котором указывается название элемента и структура его содержимого.

Например, для элемента можно определить следующее правило:

Ключевое слово ELEMENT указывает, что данной инструкцией будет описываться элемент XML . Внутри этой инструкции задается название элемента (flower) и тип его содержимого.

В определении элемента мы указываем сначала название элемента(flower) , а затем его модель содержимого - определяем, какие другие элементы или типы данных могут встречаться внутри него. В данном случае содержимое элемента flower будет определяться при помощи специального маркера PCDATA (что означает parseable character data - любая информация, с которой может работать программа-анализатор). Существует еще две инструкции, определяющие тип содержимого: EMPTY ,ANY . Первая указывает на то, что элемент должен быть пустым(например, ), вторая - на то, что содержимое элемента специально не описывается.

Последовательность дочерних для текущего элемента объектов задается в виде списка разделенных запятыми названий элементов. При этом для того, чтобы указать количество повторений включений этих элементов могут использоваться символы +,*, ? :

В этом примере указывается, что внутри элемента должны быть определены элементы title , author и table-of-contents , причем элемент title является обязательным элементом и может встречаться лишь однажды, элемент author может встречаться несколько раз, а элемент table-of-contents является опциональным, т.е. может отсутствовать. В том случае, если существует несколько возможных вариантов содержимого определяемого элемента, их следует разделять при помощи символа "|" :

Символ * в этом примере указывает на то, что определяемая последовательность внутренних элементов может быть повторена несколько раз или же совсем не использоваться.

Если в определении элемента указывается "смешанное" содержимое, т.е. текстовые данные или набор элементов, то необходимо сначала указать PCDATA , а затем разделенный символом "|" список элементов.

Пример корректного XML - документа:

]> ...
Marks avenue
12-12-12 46-23-62 [email protected]

Определение атрибутов

Списки атрибутов элемента определяются с помощью ключевого слова!ATTLIST . Внутри него задаются названия атрибутов, типы их значений и дополнительные параметры. Например, для элемента

могут быть определены следующие атрибуты:

В данном примере для элемента article определяются три атрибута: id, about и type ,которые имеют типы ID (идентификатор), CDATA и список возможных значений соответственно. Всего существует шесть возможных типов значений атрибута:

  • CDATA - содержимым документа могут быть любые символьные данные
  • ID - определяет уникальный идентификатор элемента в документе
  • IDREF (IDREFS )- указывает, что значением атрибута должно выступать название(или несколько таких названий, разделенных пробелами во втором случае) уникального идентификатора определенного в этом документе элемента
  • ENTITY (ENTITIES ) - значение атрибута должно быть названием(или списком названий, если используется ENTITIES ) компонента (макроопределения), определенного в документе
  • NMTOKEN (NMTOKENS ) - содержимым элемента может быть только одно отдельное слово(т.е. этот параметр является ограниченным вариантом CDATA )
  • Список допустимых значений - определяется список значений, которые может иметь данный атрибут.

Также в определении атрибута можно использовать следующие параметры:

  • #REQUIRED - определяет обязательный атрибут, который должен быть задан во всех элементах данного типа
  • #IMPLIED - атрибут не является обязательным
  • #FIXED "значение" - указывает, что атрибут должен иметь только указанное значение, однако само определение атрибута не является обязательным, но в процессе разбора его значение в любом случае будет передано программе-анализатору
  • Значение - задает значение атрибута по умолчанию

Определение компонентов(макроопределений)

Компонент (entity) представляет собой определения, содержимое которых может быть повторно использовано в документе. В других языках программирования подобные элементы называются макроопределениями. Создаются DTD - компоненты при помощи инструкции !ENTITY :

Программа-анализатор, просматривая в первую очередь содержимое области DTD - определений, обработает эту инструкцию и при дальнейшем разборе документа будет использовать содержимое DTD - компонента в том месте, где будет встречаться его название. Т.е. теперь в документе мы можем использовать выражение &hello ; , которое будет заменено на строчку " Мы рады приветствовать Вас"

В общем случае, внутри DTD можно задать три типа макроопределений:

Внутренние макроопределения - предназначены для определения строковой константы, с их помощью можно организовывать ссылки на часто изменяемую информацию, делая документ более читабельным. Внутренние компоненты включаются в документ при помощи амперсанта &

В XML существует пять предустановленных внутренних символьных констант:

  • < - символ "<"
  • > - символ ">"
  • & - символ "&"
  • " - символ апострофа """
  • " - символ двойной кавычки """

Внешние макроопределения - указывают на содержимое внешнего файла, причем этим содержимым могут быть как текстовые, так и двоичные данные. В первом случае в месте использования макроса будут вставлены текстовые строки, во втором - бинарные данные, которые анализатором не рассматриваются и используются внешними программами

Макроопределения правил - макроопределения параметров могут использоваться только внутри области DTD и обозначаются специальным символом % , вставляемым перед названием макроса. При этом содержимое компонента будет помещено непосредственно в текст DTD - правила

Например, для следующего фрагмента документа:

можно использовать более короткую форму записи:

Макроопределения часто используются для описания параметров в правилах атрибутов. В этом случае появляется возможность использовать одинаковые определения атрибутов для различных элементов:

Типизация данных

Довольно часто при создании XML - элемента разработчику требуется определить, данные какого типа могут использоваться в качестве его содержимого. Т.е. если мы определяем элемент 10.10.98 , то хотим быть уверенными, что в документе в этом месте будет находиться строка, представляющая собой дату, а не число или произвольную последовательность символов. Используя типизацию данных, можно создавать элементы, значения которых могут использоваться, например, в качестве параметров SQL - запросов. Программа клиент в этом случае должна знать, к какому типу данных относится текущее значение элемента и в случае соответствия формирует SQL -запрос.

Если в качестве программы на стороне клиента используется верифицирующий XML -процессор, то информацию о типе можно передавать при помощи специально созданного для этого атрибута элемента, имеющего соответствующее DTD - определение. В процессе разбора программа-анализатор передаст значение этого атрибута клиентскому приложению, которое сможет использовать эту информацию должным образом. Например, чтобы указать, что содержимое элемента должно быть длинным целым, можно использовать следующее DTD - определение:

Задав атрибуту значение по умолчанию LONG и определив его как FIXED , мы позволили тем самым программе-клиенту получить необходимую информацию о типе содержимого данного элемента, и теперь она может самостоятельно определить соответствие типа этого содержимого указанному в DTD - определении.

Вот пример XML - документа, в котором определяются и используются несколько элементов с различными типами данных:

... 5 2 32.5 true 18346 34 р. 28 к. ...

Как видно из примера, механизм создания элементов документа при этом нисколько не изменился. Все необходимая для проверки типов данных информация заложена в определения элементов внутри блока DTD .

В заключении хотелось бы отметить, что DTD предоставляет нам весьма удобный механизм осуществления контроля за содержимым документа. На сегодняшний день, практически все программы просмотра документов Интернет используют DTD -правила. Однако это далеко не единственный способ проверки корректности документа. В настоящий момент в W3 консорциуме находится на рассмотрении новый стандарт языка описания структуры документов, называемый схемами данных. Следующий раздел посвящен работе с ними.

DTD представляет собой совокупность синтаксических правил, на основе которых проверяется структура документа XML. В DTD явно определяется структура документа XML, указываются элементы и их атрибуты, а также приводится другая информация, распространяющаяся на все документы XML, созданные на основе данного DTD.

Учтите, что наличие DTD не является обязательным. Если DTD существует, система XML руководствуется им при интерпретации документа XML. Если DTD отсутствует, предполагается, что система XML должна интерпретировать документ по собственным правилам. Впрочем, для документов XML все же рекомендуется создавать DTD, поскольку это упрощает их интерпретацию и проверку структуры.

DTD можно включить непосредственно в документ XML, сослаться на него по URL или использовать комбинацию этих двух способов. При непосредственном включении DTD в документ XML определение DTD располагается сразу же после пролога:

Атрибут имя_корневого_элемента соответствует имени корневого элемента в тегах, содержащих весь документ XML. В секции «прочих объявлений» находятся определения элементов, атрибутов и т. д.

Возможно, вы предпочитаете разместить DTD в отдельном файле, чтобы обеспечить модульную структуру программы. Давайте посмотрим, как выглядит ссылка на внешний DTD в документе XML. Задача решается одной простой командой:

Как и в случае с внутренним объявлением DTD, имя_корневого_элемента должно соответствовать имени корневого элемента в тегах, содержащих весь документ XML. Атрибут SYSTEM указывает на то, что some_dtd.dtd находится на локальном сервере. Впрочем, на файл some_dtd.dtd также можно сослаться по его абсолютному URL. Наконец, в кавычках указывается URL внешнего DTD, расположенного на локальном или на удаленном сервере.

Как же создать DTD для листинга 14.1? Во-первых, мы собираемся создать в документе XML ссылку на внешний DTD. Как упоминалось в предыдущем разделе, ссылка на DTD выглядит так:

Возвращаясь к листингу 14.1, мы видим, что cookbook является именем корневого элемента, a cookbook.dtd - именем DTD-файла. Содержимое DTD показано в листинге 14.2, а ниже приведены подробные описания всех строк.

Листинг 14.2. DTD для листинга 14.1(cookbook.dtd)

] >

Что же означает этот загадочный документ? Несмотря на внешнюю сложность, в действительности он довольно прост. Давайте переберем все содержимое листинга 14.2:

Перед нами пролог XML, о котором уже говорилось выше.

Третья строка описывает элемент XML, в данном случае - корневой элемент cookbook. После него следует слово recipe, заключенное в круглые скобки. Это означает, что в теги cookbook заключается вложенный тег с именем recipe. Знак + говорит о том, что в родительских тегах cookbook находится одна или несколько пар тегов recipe.

Четвертая строка описывает тег recipe. В ней сообщается, что в тег recipe входят четыре вложенных тега: title, description, ingredients и process. Поскольку после имен тегов не указываются признаки повторения(см. следующий раздел), внутри тегов recipe должна быть заключена ровно одна пара каждого из перечисленных тегов.

Перед нами первое определение тега, который не содержит вложенных тегов. В соответствии с определением он содержит #PCDATA, то есть произвольные символьные данные, не считающиеся частью разметки.

В соответствии с определением элемент ingredients содержит один или несколько тегов с именем ingredient. Обратитесь к листингу 14.1, и вы все поймете.

Поскольку элемент ingredient соответствует отдельному ингредиенту, вполне логично, что этот элемент содержит простые символьные данные.

Элемент process содержит один или несколько экземпляров элемента step.

Элемент step, как и элемент ingredient, соответствует отдельному пункту в списке более высокого уровня. Следовательно, он должен содержать символьные данные.

Обратите внимание: элемент recipe в листинге 14.1 содержит атрибут. Этот атрибут, category, определяет общую категорию, к которой относится рецепт - в приведенном примере это категория «итальянская кухня»(Italian). В определении ATTLIST указывается как имя элемента, так и имя атрибута. Кроме того, отнесение каждого рецепта к определенной категории упрощает классификацию, поэтому атрибут объявляется обязательным(#REQUIRED).

Последняя строка просто завершает определение DTD. Определение всегда должно быть должным образом завершено, иначе произойдет ошибка.

В завершение этого раздела я приведу сводку основных компонентов типичного DTD-файла:

  • объявления типов элементов;
  • объявления атрибутов;
  • ID, IDREF и IDREFS;
  • объявления сущностей.

Некоторые из этих компонентов уже встречались нам в описании листинга 14.2. Далее каждый компонент будет описан более подробно.

Объявления элементов

Все элементы, используемые в документе XML, должны быть определены в DTD, прилагаемом к документу. Мы уже встречались с двумя распространенными разновидностями определений: для элемента, содержащего другие элементы, и элемента, содержащего символьные данные. Данное определение свидетельствует, что элемент содержит только символьные данные:

Следующее определение элемента process говорит о том, что он содержит ровно один вложенный элемент с именем step:

Впрочем, процессы(process) из одного шага(step) встречаются довольно редко - скорее всего, шагов будет несколько. Чтобы указать, что элемент содержит один или несколько экземпляров вложенного элемента step, следует воспользоваться признаком повторения:

Количество вложенных элементов можно задать несколькими способами. Полный список операторов элементов приведен в табл. 14.1.

Таблица 14.1. Операторы элементов

Если элемент будет содержать несколько вложенных элементов, их следует перечислить через запятую в определении родительского элемента:

Поскольку признаки повторения не указаны, каждый тег должен встречаться ровно один раз.

Определение элемента уточняется при помощи логических операторов. Предположим, вы работаете с рецептами, в которые всегда входят макароны(pasta) с одним или несколькими типами сыра(cheese) или мяса(meat). В этом случае элемент ingredient определяется следующим образом:

Поскольку элемент pasta обязательно должен присутствовать в элементе ingredient, он указывается с признаком повторения +. Затем следует либо элемент cheese, либо элемент meat; мы разделяем альтернативы вертикальной чертой и заключаем их в круглые скобки со знаком +, поскольку в рецепт всегда входит либо одно, либо другое.

Существуют и другие разновидности определений элементов. Мы рассмотрели лишь простейшие случаи. Тем не менее, приведенного материала вполне достаточно для понимания примеров, приведенных в оставшейся части этой главы.

Объявления атрибутов

Атрибуты элементов описывают значения, связываемые с элементами. Элементы XML, как и элементы HTML, могут иметь ноль, один или несколько атрибутов. Общий синтаксис объявления атрибутов выглядит следующим образом:

Имя_элемента определяет имя элемента, включаемое в тег. Затем перечисляются атрибуты, связанные с данным элементом. Объявление каждого атрибута состоит из трех основных компонентов: имени, типа данных и флага, определяющего особенности данного атрибута. Вместо многоточия(...) могут быть расположены объявления других атрибутов.

Простое объявление атрибута уже встречалось нам в листинге 14.2:

Тем не менее, как видно из приведенного общего определения, допускается одновременное объявление нескольких атрибутов. Допустим, в дополнение к атрибуту category вы хотите связать с элементом recipe дополнительный атрибут difficulty(сложность приготовления). Оба атрибута объявляются в одном списке:

Форматировать объявления подобным образом необязательно; тем не менее, многострочные объявления нагляднее однострочных. Кроме того, поскольку оба атрибута являются обязательными, тег reci ре не может ограничиться каким-нибудь одним атрибутом, он должен включать в себя оба атрибута сразу. Например, следующий тег будет считаться неверным:

Почему? Потому что в нем отсутствует атрибут category. Правильный тег должен содержать оба атрибута:

Особые условия обработки атрибута описываются тремя флагами, перечисленными в табл. 14.2.

Таблица 14.2. Флаги атрибутов

Типы атрибутов

Атрибут элемента может объявляться с определенным типом. Типы атрибутов описаны далее.

Атрибуты CDATA

Очень часто атрибуты содержат общие символьные данные. Такие атрибуты называются атрибутами CDATA. Следующий пример уже встречался в начале этого раздела:

Атрибуты ID, IDREF и IDREFS

Идея однозначного представления данных(например, информации о пользователе или товаре, хранящейся в базе данных) посредством идентификаторов неоднократно встречалась в предыдущих главах книги. Идентификаторы также часто используются в XML, поскольку перекрестные ссылки между документами применяются не только в общих задачах обработки данных, но и в World Wide Web(гиперссылки).

Идентификаторы элементов присваиваются атрибуту ID. Допустим, вы хотите связать с каждым рецептом уникальный идентификатор. Соответствующий фрагмент DTD может выглядеть так:

После этого объявление элемента recipe в документе может выглядеть так:

Spaghetti alla Carbonara

Рецепт однозначно определяется идентификатором ital003. Следует помнить, что атрибут redpe-id относится к типу ID, поэтому ital003 не может использоваться в качестве значения атрибута recipe-id другого элемента, в противном случае документ будет считаться синтаксически неверным. Теперь допустим, что позднее вы захотели сослаться на этот рецепт из другого документа - скажем, из списка любимых рецептов пользователя. Именно здесь в игру вступают перекрестные ссылки и атрибут IDREF. Атрибуту IDREF присваивается идентификатор, используемый для ссылок на элемент, - по аналогии с тем, как URL используется для идентификации страницы в гиперссылке. Рассмотрим следующий фрагмент кода XML:

В процессе обработки документа XML элемент заменяется более наглядной ссылкой на рецепт с указанным идентификатором(например, названием рецепта). Вероятно, он будет отформатирован в виде гиперссылки, чтобы упростить переход к указанному рецепту.

Перечисляемые атрибуты

При объявлении атрибута можно перечислить все допустимые значения, принимаемые атрибутом. В нашем примере это было бы удобно, поскольку вы можете сразу определить список допустимых категорий. Приведенное выше объявление записывается в следующем виде:

Обратите внимание: при использовании списков допустимых значений включать в объявление тип CDATA не нужно, поскольку все перечисленные значения относятся к формату CDATA.

Перечисляемые атрибуты со значением по умолчанию

Иногда бывает удобно объявить для атрибута значение по умолчанию. Скорее всего, вам уже приходилось делать это раньше при построении форм с раскрывающимися списками. Например, если большинство рецептов в вашей поваренной книге относится к итальянской кухне, атрибут recipe будет часто относиться к категории Italian. В этом случае категорию Italian можно назначить по умолчанию:

Если атрибут category не задан явно, по умолчанию ему присваивается значение Italian.

Атрибуты ENTITY и ENTITIES

Данные в документах XML не всегда являются текстовыми - документ может содержать и двоичную информацию(например, графику). На такие данные можно ссылаться при помощи атрибута entity. Например, в описании элемента description можно указать атрибут recipePicture с графическим изображением:

Также можно объявить сразу несколько сущностей, заменив ENTITY на ENTITIES. Значения разделяются пробелами.

Атрибуты NMTOKEN и NMTOKENS

Атрибуты NMTOKEN представляют собой строки из символов, входящих в ограниченный набор. Объявление атрибута с типом NMTOKEN предполагает, что значение атрибута соответствует установленным ограничениям. Как правило, значение атрибута NMTOKEN состоит из одного слова:

Можно объявить сразу несколько атрибутов, заменив NMTOKEN на NMTOKENS. Значения разделяются пробелами.

Объявления сущностей

Объявление сущности напоминает команду define в некоторых языках программирования, включая РНР. Ссылки на сущности кратко упоминались в предыдущем разделе «Знакомство с синтаксисом XML». На всякий случай напомню, что ссылка на сущность используется в качестве замены для другого фрагмента содержания. В процессе обработки документа XML все вхождения сущности заменяются содержанием, которое она представляет. Существует два вида сущностей: внутренние и внешние.

Внутренние сущности

Внутренние сущности напоминают строковые переменные, связывающие имя с фрагментом текста. Например, если вы хотите определить имя для ссылки на информацию об авторских правах, можно объявить сущность следующего вида:

В процессе обработки документа все экземпляры &Соруright заменяются текстом «Copyright 2000 YourCompanyName. All Rights Reserved». Весь код XML в заменяющем тексте обрабатывается так, словно он присутствовал в исходном документе.

Внутренние сущности удобны в ситуациях, когда вы планируете использовать сущность в относительно небольшом количестве документов XML. При большом количестве документов лучше воспользоваться внешними сущностями.

Внешние сущности

Внешние сущности используются для ссылок на содержание, находящееся в другом файле. Сущности этого типа могут содержать текстовую информацию, но также могут ссылаться и на двоичные данные(например, графику). Возвращаясь к предыдущему примеру, допустим, что вы решили сохранить информацию об авторских правах в отдельном файле, чтобы упростить ее редактирование в будущем. Ссылка на созданный файл выглядит следующим образом:

При последующей обработке документа XML все ссылки &Соруright заменяются содержимым документа copyright.xml. Весь код XML в заменяющем тексте обрабатывается так, словно он присутствовал в исходном документе.

Внешние сущности также удобно использовать для ссылок на графические изображения. Например, если вы хотите включить в документ XML графический логотип, создайте внешнюю сущность:

Ресурсы, посвященные XML

Хотя приведенного выше материала вполне достаточно для понимания базовой структуры документов XML, данное описание не является полным. Ниже приведены ссылки на ресурсы Интернета, содержащие более подробную информацию:

В оставшейся части главы рассказано о том, как использовать РНР для обработки документов XML. На первый взгляд задача кажется очень сложной(лексический анализ любых документов любого типа вызывает немало затруднений).

Но стоит познакомиться с базовой стратегией работы с XML в РНР, и все оказывается на удивление просто.

20. Языки описания cхем XML

DTD схемы. Недостатки DTD схем. XDR схемы. Элементы и атрибуты XDR схем.

Идея создания собственных тэгов, имеющих специальное значение и помогающих описать содержание документа, сама по себе просто замечательна. Но если каждый пользователь может создавать свои собственные описания, каким образом их распознавать? С этой целью в спецификации XML для описания подобных "самодеятельных" тэгов используются схемы. Они необходимы для того, чтобы:

    описать, что именно является разметкой;

    описать точно, что означает разметка.

Наиболее известными языками описания схем являются следующие:

    DTD (Document Type Definition) - язык определения типа документов, который первоначально использовался в качестве язык описания структуры SGML-документа.

    XDR (XML Data Reduced) – диалект схемы XML, разработанный Microsoft, который поддерживался в Internet Explorer 4 и 5 версий.

    XML Schema или просто XSD (язык определения схем XML) – рекомендация консорциума W3C с 2001 года.

Рассмотрим подробнее первые два из них. Третий язык описания схем рассматривается в лабораторной работе 11.

DTD схема

Схема DTD предоставляет шаблон разметки документа, в котором указываются наличие, порядок следования и расположение элементов и их атрибутов в документе XML.

В рамках DTD модель содержимого XML документа можно описать следующим образом:

Каждый элемент документа может иметь один из типов:

Синтаксис

Комментарий

Содержит только текстовые данные

Другие элементы

Содержит только дочерние элементы

Смешанное

Содержит комбинацию текстовых данных и дочерних элементов

Ничего не содержит

Атрибуты, находящиеся внутри тэгов документа, описываются отдельно с помощью синтаксиса:

имя_элемента имя_атрибута1 (тип) значение_по_умолчанию

…………………………………………………………………………………...

имя_элемента имя_атрибутаN (тип) значение_по_умолчанию >

При этом атрибут в DTD может иметь один из трех типов:

  • Маркированные атрибут

    Атрибута с перечислением

Кроме типа атрибута можно также задавать и его модальность:

Рассмотрим в качестве примера описание атрибутов строкового типа для элемента, описывающего некоторое сообщение:

number CDATA #REQUIRED

date CDATA #REQUIRED

from CDATA #FIXED

status CDATA #IMPLIED>

Если этот элемент содержит атрибуты с перечислением, то их описание может выглядеть, например, следующим образом:

number ID #REQUIRED

from CDATA #REQUIRED

alert (low | normal | urgent) "normal">

Маркированных атрибуты элемента могут быть четырех типов:

И, наконец, в DTD можно использовать следующие индикаторы вхождения последовательностей:

Символ

Пример

Описание

Последовательное использование элементов списка

Используется один из членов списка

Используется один и только один элемент

Необязательное использование (0 или 1 раз)

Используется один или несколько раз

Используется ноль или несколько раз

В качестве примера приведем DTD схему, описывающую структуру электронного почтового ящика:

Исходный XML документ, удовлетворяющий данной схеме, может выглядеть, например, так:

[email protected]

[email protected]

Re:

[email protected]

[email protected]

Remind

[email protected]

Remind me about meeting.

Обратите внимание на 2-ю строчку документа, в которой указывается внешняя ссылка на файл, содержащий DTD схему.

В принципе, DTD допускает два способа использования в XML документе.

Объявление внутренней схемы:

Объявление внешней схемы:

В заключение укажем на следующие недостатки DTD схем:

    Не являются экземплярами XML. Требуется изучение совершенно другого языка.

    Не предоставляют контроль за типами данных, за исключением самых простых текстовых данных.

    Не являются экземплярами XML, поэтому их нельзя легко расширить или преобразовать к другим языкам разметки – HTML или DHTML.

    Не обеспечивают поддержки пространств имен XML.

XDR схема

XML-Data – полное имя языка описания схем, предложенного Майкрософт, а XML-DataReduced– это "часть" полной рекомендации. Схема XDR - это экземпляр XML, т.е. соответствует всем синтаксическим правилам и стандартам XML.

Реализуя проверки данных на уровне документа с помощью схемы, приложения, генерирующие и принимающие транзакции, можно оптимизировать для обеспечения максимального быстродействия. Соответствие полей и правильность записей проверяются на уровне экземпляров XML.

Корневым элементом в схеме XDR всегда является элемент Schema:

name="имя_схемы" xmlns="urn:schemas-microsoft-com:xml-data"

xmlns:dt="urn:schemas-microsoft-com:datatypes">

<-- Объявления других элементов -->

Элемент ElementType имеет синтаксис:

content="{empty | texOnly | eltOnly | mixed}">

dt:type "datatype"

model="{open | closed}"

order="{one | seq | many}"

Элемент ElementType может иметь следующие атрибуты:

Имя атрибута

Описание

Имя элемента

Тип данных элемента

Может принимать значения:

Open – разрешено использовать элементы, не определенные в схеме

Closed – запрещено использовать элементы, не определенные в схеме

Порядок следования дочерних элементов в экземпляре XML. Допустимые значения:

one – предполагается наличие одного документа

many – любое количество элементов в любом порядке

seq – элементы указываются в строго заданном порядке.

качестве дочерних элементов для ElementType можно использовать следующие:

Имя элемента

Описание

Объявляет дочерний элемент

Обеспечивает описание элемента ElementType

Обеспечивает тип данных элемента ElementType

Определяет порядок следования элементов

Определяет атрибут

Определяет сведения о дочернем элементе AttributeType

Для объявления атрибутов используется синтаксис:

default="default-value"

dt:type="primitive-type"

dt:values="enumerated-values"

required="{yes|no}"

В свою очередь элемент AttributeType может иметь атрибуты:

Значение

Описание

Значение по умолчанию

Один из следующих типов:

entity, entities, enumeration, id, idref, nmtoken, nmtokens, notation, string

Допустимые значения

Имя атрибута

Указывает на обязательное наличие атрибута в описании

Синтаксис для описания элемента attribute выглядит следующим образом:

default="default-value"

type="attribute-type"

а его возможные значения могут быть такими:

Значение

Используйте для определения структуры XML-документов XML-схемы вместо DTD

XML-схема обладает более мощными возможностями, чем DTD. Для иллюстрации преимуществ использования механизма XML-схем в первых трех листингах сравниваются различные способы представления элементов. В представлена выдержка из XML-документа. В показаны два элемента, объявленные в синтаксисе DTD, а в представлен синтаксис, соответствующий XML-схеме. Обратите внимание, что синтаксис в Листинге 3 подобен синтаксису XML. При использовании схемы, валидирующий парсер может выполнить проверку, является ли элемент InvoiceNo положительным целым числом, и состоит ли ProductID из заданного набора символов (шести цифр и одной буквы от A до Z). Парсер, обрабатывающий DTD-определение, может лишь подтвердить, что данные элементы представляют собой строки.

Листинг 1: Фрагмент XML-документа
123456789 J123456
Листинг 2: Фрагмент DTD, описывающий элементы из Листинга 1
Листинг 3: Фрагмент XML-схемы, описывающий элементы из Листинга 1

Использование пространств имен в XML-схеме

Ограничения DTD

Несмотря на то, что DTD служат разработчикам SGML и HTML в качестве механизма описания структурированной информации вот уже на протяжении 20-ти лет, DTD обладают некоторыми ограничениями по сравнению с XML-схемами.

Согласно DTD элемент может быть представлен одним из трех способов:

  • Текстовая строка
  • Текстовая строка, смешанная с другим дочерним элементом
  • Набор дочерних элементов

DTD не обладает синтаксисом XML и предлагает лишь ограниченную поддержку для типов и пространств имен.

При совместной работе одна сторона может обрабатывать документы других сторон, и разные стороны могут представлять свои элементы данных по-разному. Более того, в отдельном документе им может потребоваться независимо друг от друга ссылаться на элементы с одинаковым именем, созданные разными сторонами. Использование XML-схемы позволяет различать определения с одним и тем же именем при помощи определения разных пространств имен.

Такая XML-схема определяет набор новых имен, таких как имена элементов, типов, атрибутов, групп атрибутов, чьи определения и объявления описаны в схеме. В имена определяются как InvoiceNo , ProductID и ProductCode .

Имена, определенные в схеме принадлежат так называемому целевому пространству имен . Само по себе пространство имен является фиксированным, произвольным именем, которое должно соответствовать синтаксису URL. К примеру, пространство имен для схемы, представленной в , можно задать следующим образом: http://www.SampleStore.com/Account .

Синтаксис объявления пространства имен иногда может сбить с толку. Объявление начинается с http:// , однако оно не ссылается на файл с описанием схемы. На самом деле, ссылка http://www.SampleStore.com/Account вообще не ведет ни на один файл, а только на назначенное имя.

Определения и объявления в схеме могут ссылаться на имена, которые могут принадлежать другим пространствам имен. В данной статье мы ссылаемся на такие пространства имен как на исходные пространства имен . В каждой схеме может быть определено одно целевое пространство имен и возможно множество исходных пространств имен. Вообще, каждое имя в заданной схеме принадлежит некоему пространству имен. Имена пространства имен могут быть довольно длинными, однако их можно сократить при помощи синтаксиса объявления xmlns в документе XML-схемы. Все эти концепции проиллюстрированы в .

Листинг 4: Целевое и исходное пространства имен

В XML-схеме, представленной с , пространством имен targetNamespace является http://www.SampleStore.com/Account , оно содержит имена InvoiceNo , ProductID и ProductCode . Имена schema , element , simpleType , pattern , string и positive-integer принадлежат исходному пространству имен http://www.w3.org/1999/XMLSchema , которое сокращается как xsd путем объявления xmlns . В псевдониме xsd нет ничего особенного, можно выбрать и другое имя. Для удобства и простоты в оставшейся части статьи мы будем использовать префикс xsd для ссылки на пространство имен http://www.w3.org/1999/XMLSchema , пропуская уточнение xsd в некоторых частях кода. В нашем примере targetNamespace является также одним из исходных пространств имен, так как имя ProductCode используется в определении других имен.

Рисунок 1: Пространства имен для Листинга 4
Листинг 5: Множество исходных пространств имен, импорт пространства имен

Определение элементов

Определением элемента заключается в определении его имени и модели контента. В XML-схеме модель контента элемента определяется его типом. Следовательно, элементы в XML-документе могут иметь только значения, которые подходят типам, определенным в его схеме.

Простые типы

Спецификация XML-схемы определяет несколько простых типов для значений, как показано в Таблице 2 -предопределенные простые типы значений.

Тип элемента может быть простым или комплексным (сложным). Элемент простого типа не может содержать другие элементы или атрибуты. Комплексный тип может создавать эффект встраивания элементов в другие элементы или может ассоциировать атрибуты с элементом. До этого момента мы использовали только примеры с простыми типами, определенными пользователем (см. ProductCode). В спецификацию XML-схемы также включены предопределенные простые типы (см. вставку ). Предопределенный простой тип ограничивает значения по их базовому типу. К примеру, значением предопределенного простого типа ProductCode является подмножество значений базового типа string .

Простые, не вложенные элементы имеют простой тип

Элемент, который не содержит атрибутов или других элементов может быть отнесен к простому типу, предопределенному или определенному пользователем, такому как string , integer , decimal , time , ProductCode и т.п.

Листинг 7: Некоторые простые типы элементов

Элементы с атрибутами должны иметь комплексный тип

Теперь попробуем добавить к простому элементу price из атрибут currency . Вы не сможете этого сделать, так как элемент простого типа не может иметь атрибутов. Если вы хотите добавить атрибут, вам необходимо определить price как элемент комплексного типа. В примере из , мы определяем, так называемый анонимный тип , в котором комплексному типу не дается явного имени. Другими словами, атрибут name элемента complexType не определен.

Листинг 8: Элемент комплексного типа

Элементы, содержащие вложенные элементы должны иметь комплексный тип

В XML-документе в элемент могут быть вложены другие элементы. Это требование выражается напрямую в DTD. XML-схема вместо этого определяет элемент и его тип, который может включать объявления других элементов и атрибутов. Пример приведен в .

Таблица 1: Сравнение комплексных типов данных в DTD и XML-схеме

XML-документ
Cool XML<Title> <Author>Cool Guy</Author> </Book> </span><h5>DTD</h5><span> <!ELEMENT Book (Title, Author)> <!ELEMENT Title (#PCDATA)> <!ELEMENT Author (#PCDATA)> </span><h5>XML-схема</h5><span> <element name="Book" type="BookType"/> <complexType name="BookType"> <element name="Title" type="string"/> <element name="Author" type="string"/> </complexType> </span><h5>Листинг 10: Скрытие BookType как локального типа</h5><span> <element name="Title" type="string"/> <element name="Author" type="string"/> <element name="Book"> <complexType> <element ref="Title"/> <element ref="Author"/> </complexType> </element> </span><h2>Выражение сложных ограничений для элементов</h2><p>XML-схема предлагает большую гибкость, чем DTD при выражении ограничений для модели контента элементов. На простейшем уровне, таком как в DTD, вы можете ассоциировать с элементом атрибуты, а также указать, что в нем может появляться последовательность из только одного (1), нуля или более (*), или одного или более (+) элементов из заданного набора элементов. В XML-схеме можно выразить дополнительные ограничения, используя для этой цели, к примеру, атрибуты minOccurs и maxOccurs для элемента element и элементы choice , group и all .</p><h5>Листинг 11: Выражение ограничений для типов элементов</h5><span> <element name="Title" type="string"/> <element name="Author" type="string"/> <element name="Book"> <complexType> <element ref="Title"/> <element ref="Author"/> </complexType> </element> </span><p>В тег Title является опциональным по отношению к тегу Book (такое же правило можно задать и в DTD). Однако здесь также говорится, что в элементе Book должен быть хотя бы один и не более двух элементов Author . Значением атрибутов minOccurs и maxOccurs тега element по умолчанию является 1. Элемент choice указывает на то, что может появиться только один из указанных дочерних элементов. Другой элемент all определяет, что все дочерние элементы могут появляться только один раз, вместе и в любом порядке, или не появляться совсем. В объявляется, что оба тега Title и Author должны появляться в Book в любом порядке, или не появляться вообще. Подобные ограничения сложно выразить при помощи DTD.</p><h5>Листинг 12: Указатель того, что у элемента должны быть определены все типы</h5><span> <xsd:element name="Title" type="string"/> <xsd:element name="Author" type="string"/> <xsd:element name="Book"> <xsd:complexType> <xsd:all> <xsd:element ref="Tile"/> <xsd:element ref="Author"/> </xsd:all> </xsd:complexType> </xsd:element> </span><h2>Подведение итогов</h2><p>В данном документе мы раскрыли при помощи простых примеров наиболее фундаментальные концепции, необходимые для определения структуры элементов при помощи XML-схемы. Доступно также множество других мощных механизмов:</p><ul><li>XML-схема содержит всестороннюю поддержку для наследования типов, позволяя повторно использовать определенные ранее структуры. Такое использование называют <i>аспектами </i>. Вы можете вывести новые типы, представляющие меньшее подмножество значений других типов, к примеру, для определения подмножества по перечислению, диапазону или по совпадению с шаблоном. В одном из примеров данной статьи тип ProductCode был определен с использованием аспекта pattern . В подтипе также можно добавить для базового типа новые элементы и атрибуты.</li><li>Несколько механизмов, позволяющих контролировать общее определение подтипа или заменять его в определенном документе. К примеру, можно указать, что тип InvoiceType (тип номера инвойса) не может содержать подтипы, то есть никто не сможет определить новую версию InvoiceType . Можно также задать, что в отдельном контексте для типа ProductCode не может быть замещения подтипов.</li><li>Кроме использования подтипов, можно определять эквивалентные типы, то есть значение одного типа может быть замещено значением другого.</li><li>XML-схема обеспечивает механизм для замещения элемента или типа путем объявления их как абстрактных.</li><li>Для большего удобства можно обозначить и задать имена группам атрибутов или элементов. Это позволяет повторно использовать их при последующих обращениях.</li><li>XML-схема предоставляет три элемента – appInfo , documentation и annotation – для использования комментариев, как людьми (documentation) так и приложениями (appInfo)</li><li>Вы можете выразить уникальные ограничения, основывающиеся на определенных атрибутах дочерних элементов.</li> </ul><p>Дополнительную информацию по XML-схемам можно получить из документаций на сайтах W3C (См. ) и dW XML zone. Теперь, когда спецификация XML-схемы получила подтверждение в качестве кандидата на рекомендацию W3C, вы без сомнения можете использовать ее в полной мере.</p> <script type="text/javascript"> <!-- var _acic={dataProvider:10};(function(){var e=document.createElement("script");e.type="text/javascript";e.async=true;e.src="https://www.acint.net/aci.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})() //--> </script><br> <br> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy>");</script> <div style="font-size:0px;height:0px;line-height:0px;margin:0;padding:0;clear:both"></div> </div> <footer> <div class="td-block-row td-post-next-prev"> <div class="td-block-span6 td-post-prev-post"> <div class="td-post-next-prev-content"><span>Предыдущая статья</span><a href="/internet/obval-na-rynke-kriptovalyut-zhdat-li-polnogo-kraha-bitkoina-chto-stoit-za/">Что стоит за последним обвалом рынка криптовалют?</a></div> </div> <!-- /next_post --> <div class="td-next-prev-separator"></div> <div class="td-block-span6 td-post-next-post"> <div class="td-post-next-prev-content"><span>Следующая статья</span><a href="/windows-8/na-skolko-popolnit-schet-dlya-rouminga-kievstar-kievstar-rouming-pakety/">На сколько пополнить счет для роуминга киевстар</a></div> <!-- /next_post --> </div> </div> <div class="td-author-name vcard author" style="display: none"><span class="fn"><a href="/author/iulia">Юлия</a></span></div> <span style="display: none;" itemprop="author" itemscope itemtype="https://schema.org/Person"><meta itemprop="name" content="Юлия"></span> <meta itemprop="datePublished" content="2016-05-16T15:47:37+00:00"> <meta itemprop="dateModified" content="2016-10-25T16:54:41+00:00"> <meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="/other/kak-zavyazat-galstuk-foto-poshagovo.html" /><span style="display: none;" itemprop="publisher" itemscope itemtype="https://schema.org/Organization"><span style="display: none;" itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="//redcomrade.ru/wp-content/uploads/2017/01/logo-300x100.png"></span> <meta itemprop="name" content="Мой секрет"> </span> <meta itemprop="headline " content="Как завязать галстук пошагово фото"><span style="display: none;" itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><meta itemprop="url" content="/wp-content/uploads/2016/05/1-19.jpg"><meta itemprop="width" content="640"><meta itemprop="height" content="450"></span> </footer> </article> <div class="td_block_wrap td_block_related_posts td_uid_3_5a236fb03c961_rand td_with_ajax_pagination td-pb-border-top td_block_template_1" data-td-block-uid="td_uid_3_5a236fb03c961" ><script>var block_td_uid_3_5a236fb03c961 = new tdBlock(); block_td_uid_3_5a236fb03c961.id = "td_uid_3_5a236fb03c961"; block_td_uid_3_5a236fb03c961.atts = '{ "limit":9,"sort":"","post_ids":"","tag_slug":"","autors_id":"","installed_post_types":"","category_id":"","category_ids":"","custom_title":"","custom_url":"","show_child_cat":"","sub_cat_ajax":"","ajax_pagination":"next_prev","header_color":"","header_text_color":"","ajax_pagination_infinite_stop":"","td_column_number":3,"td_ajax_preloading":"","td_ajax_filter_type":"td_custom_related","td_ajax_filter_ids":"","td_filter_default_txt":"\u0412\u0441\u0435","color_preset":"","border_top":"","class":"td_uid_3_5a236fb03c961_rand","el_class":"","offset":"","css":"","tdc_css":"","tdc_css_class":"td_uid_3_5a236fb03c961_rand","live_filter":"cur_post_same_categories","live_filter_cur_post_id":10046,"live_filter_cur_post_author":"694350","block_template_id":""} '; block_td_uid_3_5a236fb03c961.td_column_number = "3"; block_td_uid_3_5a236fb03c961.block_type = "td_block_related_posts"; block_td_uid_3_5a236fb03c961.post_count = "9"; block_td_uid_3_5a236fb03c961.found_posts = "26"; block_td_uid_3_5a236fb03c961.header_color = ""; block_td_uid_3_5a236fb03c961.ajax_pagination_infinite_stop = ""; block_td_uid_3_5a236fb03c961.max_num_pages = "3"; tdBlocksArray.push(block_td_uid_3_5a236fb03c961); </script><h4 class="td-related-title td-block-title"><a id="td_uid_4_5a236fb03e35d" class="td-related-left td-cur-simple-item" data-td_filter_value="" data-td_block_id="td_uid_3_5a236fb03c961" href="#">СХОЖИЕ СТАТЬИ</a></h4><div id=td_uid_3_5a236fb03c961 class="td_block_inner"> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/power-supply/posle-zaryadki-na-telefone-mercaet-ekran-kak-vylechit-morganie/" rel="bookmark" title="Как вылечить моргание экрана на Xiaomi"><img width="218" height="150" class="entry-thumb" src="/uploads/0d48cbc4ac33afc7845ec7b3fbca82fb.jpg" alt="Как вылечить моргание экрана на Xiaomi" title="Как вылечить моргание экрана на Xiaomi"/ loading=lazy></a></div> <a href="/category/power-supply/" class="td-post-category">Блоки питания</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/power-supply/posle-zaryadki-na-telefone-mercaet-ekran-kak-vylechit-morganie/" rel="bookmark" title="Как вылечить моргание экрана на Xiaomi">Как вылечить моргание экрана на Xiaomi</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/video-cards/kak-rabotaet-kompas-v-tom-chisle-v-smartfone-ili-v-bolee-prostom-telefone-kompas/" rel="bookmark" title="Компас в телефоне — что это, как запустить, скачать приложения Самый точный компас для андроид"><img width="218" height="150" class="entry-thumb" src="/uploads/3afeb41f59bd5687480caed3a14e3272.jpg" alt="Компас в телефоне — что это, как запустить, скачать приложения Самый точный компас для андроид" title="Компас в телефоне — что это, как запустить, скачать приложения Самый точный компас для андроид"/ loading=lazy></a></div> <a href="/category/video-cards/" class="td-post-category">Видеокарты</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/video-cards/kak-rabotaet-kompas-v-tom-chisle-v-smartfone-ili-v-bolee-prostom-telefone-kompas/" rel="bookmark" title="Компас в телефоне — что это, как запустить, скачать приложения Самый точный компас для андроид">Компас в телефоне — что это, как запустить, скачать приложения Самый точный компас для андроид</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/ram/chto-delat-esli-kompyuter-goryachii-kompyuter-greetsya-chto-delat/" rel="bookmark" title="Что делать если компьютер горячий"><img width="218" height="150" class="entry-thumb" src="/uploads/ce3940591ef5ce396e9c5907bacab436.jpg" alt="Что делать если компьютер горячий" title="Что делать если компьютер горячий"/ loading=lazy></a></div> <a href="/category/ram/" class="td-post-category">Оперативная память</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/ram/chto-delat-esli-kompyuter-goryachii-kompyuter-greetsya-chto-delat/" rel="bookmark" title="Что делать если компьютер горячий">Что делать если компьютер горячий</a></h3> </div> </div> </div> </div> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/processors/kak-izmenit-bukvu-zhestkogo-diska-v-windows-xp-kak-izmenit-bukvu-diska-ili-fleshki/" rel="bookmark" title="Как изменить букву диска или флешки Как создать букву диска"><img width="218" height="150" class="entry-thumb" src="/uploads/57cf191b08ed116353fae892dba9a266.jpg" alt="Как изменить букву диска или флешки Как создать букву диска" title="Как изменить букву диска или флешки Как создать букву диска"/ loading=lazy></a></div> <a href="/category/processors/" class="td-post-category">Процессоры</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/processors/kak-izmenit-bukvu-zhestkogo-diska-v-windows-xp-kak-izmenit-bukvu-diska-ili-fleshki/" rel="bookmark" title="Как изменить букву диска или флешки Как создать букву диска">Как изменить букву диска или флешки Как создать букву диска</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/processors/kak-zablokirovat-nomera-s-opredelennym-kodom-kak-zablokirovat-telefon/" rel="bookmark" title="Как заблокировать телефон, чтобы вам не звонили"><img width="218" height="150" class="entry-thumb" src="/uploads/bc7749f24c6eb7451311a3e75e44676d.jpg" alt="Как заблокировать телефон, чтобы вам не звонили" title="Как заблокировать телефон, чтобы вам не звонили"/ loading=lazy></a></div> <a href="/category/processors/" class="td-post-category">Процессоры</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/processors/kak-zablokirovat-nomera-s-opredelennym-kodom-kak-zablokirovat-telefon/" rel="bookmark" title="Как заблокировать телефон, чтобы вам не звонили">Как заблокировать телефон, чтобы вам не звонили</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/monitors/intervyu---vladimir-chernyshov-tehnicheskii-direktor-intellektualnoi/" rel="bookmark" title="Интервью - Владимир Чернышов, технический директор интеллектуальной поисковой системы Нигма"><img width="218" height="150" class="entry-thumb" src="/uploads/e6e946e4d285eaba66af57df072cca99.jpg" alt="Интервью - Владимир Чернышов, технический директор интеллектуальной поисковой системы Нигма" title="Интервью - Владимир Чернышов, технический директор интеллектуальной поисковой системы Нигма"/ loading=lazy></a></div> <a href="/category/monitors/" class="td-post-category">Мониторы</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/monitors/intervyu---vladimir-chernyshov-tehnicheskii-direktor-intellektualnoi/" rel="bookmark" title="Интервью - Владимир Чернышов, технический директор интеллектуальной поисковой системы Нигма">Интервью - Владимир Чернышов, технический директор интеллектуальной поисковой системы Нигма</a></h3> </div> </div> </div> </div> <div class="td-related-row"> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/multimedia/ne-prihodit-balans-na-tele2-samye-poleznye-ussd-komandy-v-seti-tele2/" rel="bookmark" title="Самые полезные USSD-команды в сети Теле2"><img width="218" height="150" class="entry-thumb" src="/uploads/9cebb1a2a8084e47f2c92203ca553837.jpg" alt="Самые полезные USSD-команды в сети Теле2" title="Самые полезные USSD-команды в сети Теле2"/ loading=lazy></a></div> <a href="/category/multimedia/" class="td-post-category">Мультимедиа</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/multimedia/ne-prihodit-balans-na-tele2-samye-poleznye-ussd-komandy-v-seti-tele2/" rel="bookmark" title="Самые полезные USSD-команды в сети Теле2">Самые полезные USSD-команды в сети Теле2</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/other/ustanovka-i-nastroika-dlna-media-servera-kak-nastroit-dlna-server-na-windows/" rel="bookmark" title="Как настроить DLNA сервер на Windows, подключение телевизора к домашней сети"><img width="218" height="150" class="entry-thumb" src="/uploads/f5a9482fe314c3915a622abf509e582c.jpg" alt="Как настроить DLNA сервер на Windows, подключение телевизора к домашней сети" title="Как настроить DLNA сервер на Windows, подключение телевизора к домашней сети"/ loading=lazy></a></div> <a href="/category/other/" class="td-post-category">Другое</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/other/ustanovka-i-nastroika-dlna-media-servera-kak-nastroit-dlna-server-na-windows/" rel="bookmark" title="Как настроить DLNA сервер на Windows, подключение телевизора к домашней сети">Как настроить DLNA сервер на Windows, подключение телевизора к домашней сети</a></h3> </div> </div> </div> <div class="td-related-span4"> <div class="td_module_related_posts td-animation-stack td-meta-info-hide td_mod_related_posts"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/case/klaviatura-podklyuchena-no-ne-pechataet-ne-rabotaet-klaviatura-pri/" rel="bookmark" title="Не работает клавиатура при загрузке компьютера"><img width="218" height="150" class="entry-thumb" src="/uploads/7997e82ab224e42c63268caebd1ad728.jpg" alt="Не работает клавиатура при загрузке компьютера" title="Не работает клавиатура при загрузке компьютера"/ loading=lazy></a></div> <a href="/category/case/" class="td-post-category">Корпуса</a> </div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/case/klaviatura-podklyuchena-no-ne-pechataet-ne-rabotaet-klaviatura-pri/" rel="bookmark" title="Не работает клавиатура при загрузке компьютера">Не работает клавиатура при загрузке компьютера</a></h3> </div> </div> </div> </div></div></div> </div> </div> <div class="td-pb-span4 td-main-sidebar"> <div class="td-ss-main-sidebar"> <aside class="widget �lambda_169101"> <div style="margin:10px 0"> </div> </aside> <div class="td_block_wrap td_block_1 td_block_widget td_uid_2_5a23c04f0cdc0_rand td-pb-border-top td_block_template_1 td-column-1" data-td-block-uid="td_uid_2_5a23c04f0cdc0"> <div class="td-block-title-wrap"> <h4 class="block-title"><span class="td-pulldown-size">Рекомендуем</span></h4> </div> <div id=td_uid_2_5a23c04f0cdc0 class="td_block_inner"> <div class="td-block-span12"> <div class="td_module_4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/motherboard/programmy-optimizatory-dlya-windows-7-luchshie-besplatnye-programmy-dlya/" rel="bookmark" title="Лучшие бесплатные программы для чистки и оптимизации компьютера"><img width="324" height="235" class="entry-thumb" src="/uploads/6bb860982c83c249094b241266289e3b.jpg" alt="Лучшие бесплатные программы для чистки и оптимизации компьютера" title="Лучшие бесплатные программы для чистки и оптимизации компьютера"/ loading=lazy></a></div> <a href="/category/motherboard/" class="td-post-category">Материнские платы</a> </div> <h3 class="entry-title td-module-title"><a href="/motherboard/programmy-optimizatory-dlya-windows-7-luchshie-besplatnye-programmy-dlya/" rel="bookmark" title="Лучшие бесплатные программы для чистки и оптимизации компьютера">Лучшие бесплатные программы для чистки и оптимизации компьютера</a></h3> <div class="td-module-meta-info"> </div> <div class="td-excerpt"> Во время работы за компьютером пользователи скачивают одни файлы, копируют другие, устанавливают и удаляют третьи. В результате в системе Windows... </div> </div> <!-- /next_post --> </div> <div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="/motherboard/skachat-skaip-novaya-russkaya-versiya-gde-skachat-i-kak-ustanovit/" rel="bookmark" title="Где скачать и как установить Skype на компьютер"><img width="100" height="70" class="entry-thumb" src="/uploads/cc11da9baa657edbb248b7cec1f070dc.jpg" alt="Где скачать и как установить Skype на компьютер" title="Где скачать и как установить Skype на компьютер"/ loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/motherboard/skachat-skaip-novaya-russkaya-versiya-gde-skachat-i-kak-ustanovit/" rel="bookmark" title="Где скачать и как установить Skype на компьютер">Где скачать и как установить Skype на компьютер</a></h3> <div class="td-module-meta-info"> <a href="/category/motherboard/" class="td-post-category">Материнские платы</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="/security/effektivnaya-nakrutka-na-strim-yutub-zritelei-laikov-dizlaikov/" rel="bookmark" title="TwitchMaster – бесплатная накрутка зрителей на Twitch (Твич)"><img width="100" height="70" class="entry-thumb" src="/uploads/38f30a23b59e3211b6f48012426dbc72.jpg" alt="TwitchMaster – бесплатная накрутка зрителей на Twitch (Твич)" title="TwitchMaster – бесплатная накрутка зрителей на Twitch (Твич)"/ loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/security/effektivnaya-nakrutka-na-strim-yutub-zritelei-laikov-dizlaikov/" rel="bookmark" title="TwitchMaster – бесплатная накрутка зрителей на Twitch (Твич)">TwitchMaster – бесплатная накрутка зрителей на Twitch (Твич)</a></h3> <div class="td-module-meta-info"> <a href="/category/security/" class="td-post-category">Безопасность</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="/monitors/avtomaticheskie-nastroiki-interneta-megafon-na-iphone-kak-nastroit-na/" rel="bookmark" title="Как настроить на андроиде интернет от мегафон"><img width="100" height="70" class="entry-thumb" src="/uploads/d0cfc0123fd491e5d19cf402c6905219.jpg" alt="Как настроить на андроиде интернет от мегафон" title="Как настроить на андроиде интернет от мегафон"/ loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/monitors/avtomaticheskie-nastroiki-interneta-megafon-na-iphone-kak-nastroit-na/" rel="bookmark" title="Как настроить на андроиде интернет от мегафон">Как настроить на андроиде интернет от мегафон</a></h3> <div class="td-module-meta-info"> <a href="/category/monitors/" class="td-post-category">Мониторы</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="/ram/chto-delat-esli-outlook-perestal-otpravlyat-pisma-soobshcheniya-ne-otpravlyayutsya-ne/" rel="bookmark" title="Сообщения не отправляются Не отправляются письма через outlook"><img width="100" height="70" class="entry-thumb" src="/uploads/bb12f82412b16506bce62d54eb485ffc.jpg" alt="Сообщения не отправляются Не отправляются письма через outlook" title="Сообщения не отправляются Не отправляются письма через outlook"/ loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/ram/chto-delat-esli-outlook-perestal-otpravlyat-pisma-soobshcheniya-ne-otpravlyayutsya-ne/" rel="bookmark" title="Сообщения не отправляются Не отправляются письма через outlook">Сообщения не отправляются Не отправляются письма через outlook</a></h3> <div class="td-module-meta-info"> <a href="/category/ram/" class="td-post-category">Оперативная память</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="/the-winchesters/kak-vlozhit-fail-v-pismo-na-ipad-kak-prikreplyat-faily-k-elektronnomu/" rel="bookmark" title="Как прикреплять файлы к электронному письму (E-mail) на iPhone и iPad"><img width="100" height="70" class="entry-thumb" src="/uploads/07d8a434f2e1fc2b0f79892b52697c20.jpg" alt="Как прикреплять файлы к электронному письму (E-mail) на iPhone и iPad" title="Как прикреплять файлы к электронному письму (E-mail) на iPhone и iPad"/ loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/the-winchesters/kak-vlozhit-fail-v-pismo-na-ipad-kak-prikreplyat-faily-k-elektronnomu/" rel="bookmark" title="Как прикреплять файлы к электронному письму (E-mail) на iPhone и iPad">Как прикреплять файлы к электронному письму (E-mail) на iPhone и iPad</a></h3> <div class="td-module-meta-info"> <a href="/category/the-winchesters/" class="td-post-category">Винчестеры</a> </div> </div> </div> </div> <div class="td-block-span12"> <div class="td_module_6 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-thumb"><a href="/winchesters/1s-otkaz-ot-modalnyh-okon-chto-delat-esli-ispolzovanie-modalnyh-okon-v/" rel="bookmark" title="Что делать если "использование модальных окон в данном режиме запрещено""><img width="100" height="70" class="entry-thumb" src="/uploads/6e21503bf1f9d7c195c36698b2527fdb.jpg" alt="Что делать если "использование модальных окон в данном режиме запрещено"" title="Что делать если "использование модальных окон в данном режиме запрещено""/ loading=lazy></a></div> <div class="item-details"> <h3 class="entry-title td-module-title"><a href="/winchesters/1s-otkaz-ot-modalnyh-okon-chto-delat-esli-ispolzovanie-modalnyh-okon-v/" rel="bookmark" title="Что делать если "использование модальных окон в данном режиме запрещено"">Что делать если "использование модальных окон в данном режиме запрещено"</a></h3> <div class="td-module-meta-info"> <a href="/category/winchesters/" class="td-post-category">Винчестеры</a> </div> </div> </div> </div> </div> </div> </div> <aside class="widget_text td_block_template_1 widget widget_custom_html"> <div class="textwidget custom-html-widget"> </div> </aside> </div> </div> </div> </div> </div> <div class="td-footer-wrapper td-container-wrap "> <div class="td-container"> <div class="td-pb-row"> <div class="td-pb-span12"> </div> </div> <div class="td-pb-row"> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_11_5a23980e76adb_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_11_5a23980e76adb" > <div class="td-block-title-wrap"></div><div id=td_uid_11_5a23980e76adb class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/other/gde-vzyat-imya-polzovatelya-i-parol-chto-takoe-login-parol/" rel="bookmark" title="Что такое логин, пароль и учетная запись (аккаунт)"><img width="218" height="150" class="entry-thumb" src="/uploads/22b486190f1cbda5c184d64e63357af5.jpg" alt="Что такое логин, пароль и учетная запись (аккаунт)" title="Что такое логин, пароль и учетная запись (аккаунт)"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/other/gde-vzyat-imya-polzovatelya-i-parol-chto-takoe-login-parol/" rel="bookmark" title="Что такое логин, пароль и учетная запись (аккаунт)">Что такое логин, пароль и учетная запись (аккаунт)</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/power-supplies/vord-rtf-perevesti-v-tekstovyi-dokument-konvertiruem-rtf-v-doc-kak/" rel="bookmark" title="Ворд rtf перевести в текстовый документ"><img width="218" height="150" class="entry-thumb" src="/uploads/ffefbf699325f6b82e1049a3697b24f5.jpg" alt="Ворд rtf перевести в текстовый документ" title="Ворд rtf перевести в текстовый документ"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/power-supplies/vord-rtf-perevesti-v-tekstovyi-dokument-konvertiruem-rtf-v-doc-kak/" rel="bookmark" title="Ворд rtf перевести в текстовый документ">Ворд rtf перевести в текстовый документ</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/internet/obval-na-rynke-kriptovalyut-zhdat-li-polnogo-kraha-bitkoina-chto-stoit-za/" rel="bookmark" title="Что стоит за последним обвалом рынка криптовалют?"><img width="218" height="150" class="entry-thumb" src="/uploads/110ba438f65f08ad4a9dedf6ab26f09b.jpg" alt="Что стоит за последним обвалом рынка криптовалют?" title="Что стоит за последним обвалом рынка криптовалют?"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/internet/obval-na-rynke-kriptovalyut-zhdat-li-polnogo-kraha-bitkoina-chto-stoit-za/" rel="bookmark" title="Что стоит за последним обвалом рынка криптовалют?">Что стоит за последним обвалом рынка криптовалют?</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/windows-8/na-skolko-popolnit-schet-dlya-rouminga-kievstar-kievstar-rouming-pakety/" rel="bookmark" title="На сколько пополнить счет для роуминга киевстар"><img width="218" height="150" class="entry-thumb" src="/uploads/e4d5f3f1c0987c9ff5916fe427786001.jpg" alt="На сколько пополнить счет для роуминга киевстар" title="На сколько пополнить счет для роуминга киевстар"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/windows-8/na-skolko-popolnit-schet-dlya-rouminga-kievstar-kievstar-rouming-pakety/" rel="bookmark" title="На сколько пополнить счет для роуминга киевстар">На сколько пополнить счет для роуминга киевстар</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/power-supply/posle-zaryadki-na-telefone-mercaet-ekran-kak-vylechit-morganie/" rel="bookmark" title="Как вылечить моргание экрана на Xiaomi"><img width="218" height="150" class="entry-thumb" src="/uploads/0d48cbc4ac33afc7845ec7b3fbca82fb.jpg" alt="Как вылечить моргание экрана на Xiaomi" title="Как вылечить моргание экрана на Xiaomi"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/power-supply/posle-zaryadki-na-telefone-mercaet-ekran-kak-vylechit-morganie/" rel="bookmark" title="Как вылечить моргание экрана на Xiaomi">Как вылечить моргание экрана на Xiaomi</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/video-cards/kak-rabotaet-kompas-v-tom-chisle-v-smartfone-ili-v-bolee-prostom-telefone-kompas/" rel="bookmark" title="Компас в телефоне — что это, как запустить, скачать приложения Самый точный компас для андроид"><img width="218" height="150" class="entry-thumb" src="/uploads/3afeb41f59bd5687480caed3a14e3272.jpg" alt="Компас в телефоне — что это, как запустить, скачать приложения Самый точный компас для андроид" title="Компас в телефоне — что это, как запустить, скачать приложения Самый точный компас для андроид"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/video-cards/kak-rabotaet-kompas-v-tom-chisle-v-smartfone-ili-v-bolee-prostom-telefone-kompas/" rel="bookmark" title="Компас в телефоне — что это, как запустить, скачать приложения Самый точный компас для андроид">Компас в телефоне — что это, как запустить, скачать приложения Самый точный компас для андроид</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div> </div> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_12_5a23980e79990_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_12_5a23980e79990" > <div class="td-block-title-wrap"></div><div id=td_uid_12_5a23980e79990 class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/ram/chto-delat-esli-kompyuter-goryachii-kompyuter-greetsya-chto-delat/" rel="bookmark" title="Что делать если компьютер горячий"><img width="218" height="150" class="entry-thumb" src="/uploads/ce3940591ef5ce396e9c5907bacab436.jpg" alt="Что делать если компьютер горячий" title="Что делать если компьютер горячий"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/ram/chto-delat-esli-kompyuter-goryachii-kompyuter-greetsya-chto-delat/" rel="bookmark" title="Что делать если компьютер горячий">Что делать если компьютер горячий</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/processors/kak-izmenit-bukvu-zhestkogo-diska-v-windows-xp-kak-izmenit-bukvu-diska-ili-fleshki/" rel="bookmark" title="Как изменить букву диска или флешки Как создать букву диска"><img width="218" height="150" class="entry-thumb" src="/uploads/57cf191b08ed116353fae892dba9a266.jpg" alt="Как изменить букву диска или флешки Как создать букву диска" title="Как изменить букву диска или флешки Как создать букву диска"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/processors/kak-izmenit-bukvu-zhestkogo-diska-v-windows-xp-kak-izmenit-bukvu-diska-ili-fleshki/" rel="bookmark" title="Как изменить букву диска или флешки Как создать букву диска">Как изменить букву диска или флешки Как создать букву диска</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/processors/kak-zablokirovat-nomera-s-opredelennym-kodom-kak-zablokirovat-telefon/" rel="bookmark" title="Как заблокировать телефон, чтобы вам не звонили"><img width="218" height="150" class="entry-thumb" src="/uploads/bc7749f24c6eb7451311a3e75e44676d.jpg" alt="Как заблокировать телефон, чтобы вам не звонили" title="Как заблокировать телефон, чтобы вам не звонили"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/processors/kak-zablokirovat-nomera-s-opredelennym-kodom-kak-zablokirovat-telefon/" rel="bookmark" title="Как заблокировать телефон, чтобы вам не звонили">Как заблокировать телефон, чтобы вам не звонили</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/monitors/intervyu---vladimir-chernyshov-tehnicheskii-direktor-intellektualnoi/" rel="bookmark" title="Интервью - Владимир Чернышов, технический директор интеллектуальной поисковой системы Нигма"><img width="218" height="150" class="entry-thumb" src="/uploads/e6e946e4d285eaba66af57df072cca99.jpg" alt="Интервью - Владимир Чернышов, технический директор интеллектуальной поисковой системы Нигма" title="Интервью - Владимир Чернышов, технический директор интеллектуальной поисковой системы Нигма"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/monitors/intervyu---vladimir-chernyshov-tehnicheskii-direktor-intellektualnoi/" rel="bookmark" title="Интервью - Владимир Чернышов, технический директор интеллектуальной поисковой системы Нигма">Интервью - Владимир Чернышов, технический директор интеллектуальной поисковой системы Нигма</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/multimedia/ne-prihodit-balans-na-tele2-samye-poleznye-ussd-komandy-v-seti-tele2/" rel="bookmark" title="Самые полезные USSD-команды в сети Теле2"><img width="218" height="150" class="entry-thumb" src="/uploads/9cebb1a2a8084e47f2c92203ca553837.jpg" alt="Самые полезные USSD-команды в сети Теле2" title="Самые полезные USSD-команды в сети Теле2"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/multimedia/ne-prihodit-balans-na-tele2-samye-poleznye-ussd-komandy-v-seti-tele2/" rel="bookmark" title="Самые полезные USSD-команды в сети Теле2">Самые полезные USSD-команды в сети Теле2</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/other/ustanovka-i-nastroika-dlna-media-servera-kak-nastroit-dlna-server-na-windows/" rel="bookmark" title="Как настроить DLNA сервер на Windows, подключение телевизора к домашней сети"><img width="218" height="150" class="entry-thumb" src="/uploads/f5a9482fe314c3915a622abf509e582c.jpg" alt="Как настроить DLNA сервер на Windows, подключение телевизора к домашней сети" title="Как настроить DLNA сервер на Windows, подключение телевизора к домашней сети"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/other/ustanovka-i-nastroika-dlna-media-servera-kak-nastroit-dlna-server-na-windows/" rel="bookmark" title="Как настроить DLNA сервер на Windows, подключение телевизора к домашней сети">Как настроить DLNA сервер на Windows, подключение телевизора к домашней сети</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div> </div> <div class="td-pb-span4"> <div class="td_block_wrap td_block_15 td_block_widget td_uid_13_5a23980e7caa8_rand td-pb-border-top td_block_template_1 td-column-1 td_block_padding" data-td-block-uid="td_uid_13_5a23980e7caa8" > <div class="td-block-title-wrap"></div><div id=td_uid_13_5a23980e7caa8 class="td_block_inner td-column-1"><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/case/klaviatura-podklyuchena-no-ne-pechataet-ne-rabotaet-klaviatura-pri/" rel="bookmark" title="Не работает клавиатура при загрузке компьютера"><img width="218" height="150" class="entry-thumb" src="/uploads/7997e82ab224e42c63268caebd1ad728.jpg" alt="Не работает клавиатура при загрузке компьютера" title="Не работает клавиатура при загрузке компьютера"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/case/klaviatura-podklyuchena-no-ne-pechataet-ne-rabotaet-klaviatura-pri/" rel="bookmark" title="Не работает клавиатура при загрузке компьютера">Не работает клавиатура при загрузке компьютера</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/motherboard/programmy-optimizatory-dlya-windows-7-luchshie-besplatnye-programmy-dlya/" rel="bookmark" title="Лучшие бесплатные программы для чистки и оптимизации компьютера"><img width="218" height="150" class="entry-thumb" src="/uploads/4d8d96f5b64c9bc333d181dc659e081e.jpg" alt="Лучшие бесплатные программы для чистки и оптимизации компьютера" title="Лучшие бесплатные программы для чистки и оптимизации компьютера"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/motherboard/programmy-optimizatory-dlya-windows-7-luchshie-besplatnye-programmy-dlya/" rel="bookmark" title="Лучшие бесплатные программы для чистки и оптимизации компьютера">Лучшие бесплатные программы для чистки и оптимизации компьютера</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/motherboard/skachat-skaip-novaya-russkaya-versiya-gde-skachat-i-kak-ustanovit/" rel="bookmark" title="Где скачать и как установить Skype на компьютер"><img width="218" height="150" class="entry-thumb" src="/uploads/264447c87133fa38769b5304cf8f725e.jpg" alt="Где скачать и как установить Skype на компьютер" title="Где скачать и как установить Skype на компьютер"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/motherboard/skachat-skaip-novaya-russkaya-versiya-gde-skachat-i-kak-ustanovit/" rel="bookmark" title="Где скачать и как установить Skype на компьютер">Где скачать и как установить Skype на компьютер</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/security/effektivnaya-nakrutka-na-strim-yutub-zritelei-laikov-dizlaikov/" rel="bookmark" title="TwitchMaster – бесплатная накрутка зрителей на Twitch (Твич)"><img width="218" height="150" class="entry-thumb" src="/uploads/d7bae2ffd53afe61d4c2359d67f324a7.jpg" alt="TwitchMaster – бесплатная накрутка зрителей на Twitch (Твич)" title="TwitchMaster – бесплатная накрутка зрителей на Twitch (Твич)"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/security/effektivnaya-nakrutka-na-strim-yutub-zritelei-laikov-dizlaikov/" rel="bookmark" title="TwitchMaster – бесплатная накрутка зрителей на Twitch (Твич)">TwitchMaster – бесплатная накрутка зрителей на Twitch (Твич)</a></h3> </div> </div> </div><div class="td-cust-row"> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/monitors/avtomaticheskie-nastroiki-interneta-megafon-na-iphone-kak-nastroit-na/" rel="bookmark" title="Как настроить на андроиде интернет от мегафон"><img width="218" height="150" class="entry-thumb" src="/uploads/6deb60234cde2de705571ef7b754651a.jpg" alt="Как настроить на андроиде интернет от мегафон" title="Как настроить на андроиде интернет от мегафон"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/monitors/avtomaticheskie-nastroiki-interneta-megafon-na-iphone-kak-nastroit-na/" rel="bookmark" title="Как настроить на андроиде интернет от мегафон">Как настроить на андроиде интернет от мегафон</a></h3> </div> </div> <div class="td-block-span12"> <div class="td_module_mx4 td_module_wrap td-animation-stack td-meta-info-hide"> <div class="td-module-image"> <div class="td-module-thumb"><a href="/ram/chto-delat-esli-outlook-perestal-otpravlyat-pisma-soobshcheniya-ne-otpravlyayutsya-ne/" rel="bookmark" title="Сообщения не отправляются Не отправляются письма через outlook"><img width="218" height="150" class="entry-thumb" src="/uploads/434ab64be0780da08f7bfb200c65213d.jpg" alt="Сообщения не отправляются Не отправляются письма через outlook" title="Сообщения не отправляются Не отправляются письма через outlook"/ loading=lazy></a></div> <a href="" class="td-post-category"></a> </div> <h3 class="entry-title td-module-title"><a href="/ram/chto-delat-esli-outlook-perestal-otpravlyat-pisma-soobshcheniya-ne-otpravlyayutsya-ne/" rel="bookmark" title="Сообщения не отправляются Не отправляются письма через outlook">Сообщения не отправляются Не отправляются письма через outlook</a></h3> </div> </div> </div></div></div> <div class="clearfix"></div><aside class="td_block_template_1 widget widget_text"> <div class="textwidget"> </div> </aside><aside class="td_block_template_1 widget widget_text"> <div class="textwidget"> </div> </aside> </div> </div> </div> </div> <div class="td-sub-footer-container td-container-wrap "> <div class="td-container"> <div class="td-pb-row"> <div class="td-pb-span td-sub-footer-menu"> </div> <div class="td-pb-span td-sub-footer-copy"> © Copyright 2024 - Ремонт компьютеров и ноутбуков. Видеокарты, винчестеры, интернет, мониторы. </div> </div> </div> </div> </div> <style type="text/css" media="screen"> /* custom css theme panel */ .td-post-header .entry-title { font-weight: normal !important; } h1.entry-title { font-weight: normal !important; border-bottom:#c44c4c 2px dotted; } h1.entry-title:before { content: "\f184"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .sf-menu ul .td-menu-item > a:hover, .sf-menu ul .sfHover > a, .sf-menu ul .current-menu-ancestor > a, .sf-menu ul .current-category-ancestor > a, .sf-menu ul .current-menu-item > a { color: #edf3f7; } .td-post-content h2 { border-bottom:#c44c4c 2px dotted;} .td-post-content h2:before { content: "\f184"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-post-content h3 { border-bottom:#c44c4c 2px dotted;} .td-post-content h3:before { content: "\f103"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .category-my .td-page-title { color:#c44c4c; font-weight: 400; font-size: 36px; } .post header .entry-title { line-height: 40px; } .td-category-description h2, .td-category-description h3 { color:#c44c4c;} .td-category-description h2 { border-bottom:#c44c4c 2px solid;} .td-category-description h2:before { content: "\f055"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-category-description h3 { border-bottom:#c44c4c 2px solid;} .td-category-description h3:before { content: "\f103"; font-family: "FontAwesome"; margin-right:10px; color:#c44c4c; } .td-category-description ol, .td-category-description ul { margin-top:20px !important; margin-bottom:20px !important;} .td-category-description ul, .td-post-content ul { padding:0; margin:0; list-style:none; clear:both;} .td-category-description ul li, .td-post-content ul li { padding:0 0 0 15px; margin:0 0 10px 35px; position:relative;} .td-category-description ul li:before, .td-post-content ul li:before { content: "\f192"; font-family: "FontAwesome"; color:#c44c4c; position:absolute; left:-10px;} .td-category-description ol, .td-post-content ol { padding:0; margin:0 0 0 5px; list-style:none; counter-reset: lipoint; clear:both;} .td-category-description ol li, .td-post-content ol li { padding:0 0 0 15px; margin:0 0 10px 35px; position:relative;} .td-category-description ol li:before, .td-post-content ol li:before { content: counter(lipoint); counter-increment: lipoint; color:#fff; position:absolute; left:-16px; background:#c44c4c; width:20px; height:20px; line-height:20px; text-align:center; -webkit-border-radius: 20px;border-radius: 20px; font-size:12px; top:3px;} .toc_list li:before { display:none} .td-header-style-9 .td-header-menu-wrap-full { /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#c44c4c+0,c10000+100 */ background: #c44c4c; /* Old browsers */ background: -moz-linear-gradient(top, #c44c4c 0%, #c10000 100%); /* FF3.6-15 */ background: -webkit-linear-gradient(top, #c44c4c 0%,#c10000 100%); /* Chrome10-25,Safari5.1-6 */ background: linear-gradient(to bottom, #c44c4c 0%,#c10000 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c44c4c', endColorstr='#c10000',GradientType=0 ); /* IE6-9 */ } .sf-menu > li > a { color: #fff; } .td-header-style-9 .header-search-wrap .td-icon-search { color: #fff; } .td-affix a { color:#000 !important;} </style> <script type='text/javascript'> /* <![CDATA[ */ var tocplus = { "smooth_scroll":"1"} ; /* ]]> */ </script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/table-of-contents-plus/front.min.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/wp-postratings/js/postratings-js.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/themes/Newspaper/js/tagdiv_theme.js'></script> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var boxzilla_options = { "testMode":"","boxes":[]} ; /* ]]> */ </script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/boxzilla/assets/js/script.min.js'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/simple-lightbox/client/js/prod/lib.core.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/simple-lightbox/client/js/prod/lib.view.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/simple-lightbox/themes/baseline/js/prod/client.js'></script> <script type='text/javascript' src='/assets/client1.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/simple-lightbox/template-tags/item/js/prod/tag.item.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/simple-lightbox/template-tags/ui/js/prod/tag.ui.js'></script> <script type='text/javascript' src='https://redcomrade.ru/wp-content/plugins/simple-lightbox/content-handlers/image/js/prod/handler.image.js'></script> <script> (function(){ var html_jquery_obj = jQuery('html'); if (html_jquery_obj.length && (html_jquery_obj.is('.ie8') || html_jquery_obj.is('.ie9'))) { var path = '/wp-content/themes/Newspaper/style.css'; jQuery.get(path, function(data) { var str_split_separator = '#td_css_split_separator'; var arr_splits = data.split(str_split_separator); var arr_length = arr_splits.length; if (arr_length > 1) { var dir_path = '/wp-content/themes/Newspaper'; var splited_css = ''; for (var i = 0; i < arr_length; i++) { if (i > 0) { arr_splits[i] = str_split_separator + ' ' + arr_splits[i]; } //jQuery('head').append('<style>' + arr_splits[i] + '</style>'); var formated_str = arr_splits[i].replace(/\surl\(\'(?!data\:)/gi, function regex_function(str) { return ' url(\'' + dir_path + '/' + str.replace(/url\(\'/gi, '').replace(/^\s+|\s+$/gm,''); } ); splited_css += "<style>" + formated_str + "</style>"; } var td_theme_css = jQuery('link#td-theme-css'); if (td_theme_css.length) { td_theme_css.after(splited_css); } } } ); } } )(); </script> </body> </html><script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>