Xml dtd примеры. Смотреть что такое "DTD" в других словарях

14.04.2019

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

Объявление атрибута очень много подобно к объявлениям элемента в много путей за исключением одного; вместо объявлять позволяемое содержание для элементов, вы объявляете список позволяемых атрибутов для каждого элемента. Эти списки вызваны объявлением ATTLIST.

Синтаксис

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

В вышеуказанном синтаксисе

    Старт атрибутов DTD с

    элемент-имя определяет имя элемента к которому атрибут применяется.

    атрибут-имя определяет имя атрибута который включен с элемент-именем.

    атрибут-тип определяет тип атрибутов. Мы обсудим больше на этом в следующих разделах.

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

Пример

Ниже простой пример для объявления атрибута в DTD:

]>

Tanmay Patil

Препятствуйте нам пойти через вышеуказанный Код:

    Начните с объявлением XML с следующим заявлением:

    Немедленно после коллектора XML тип объявление документа, обыкновенно называемое DOCTYPE:

    DOCTYPE сообщает парсер что DTD связан с этим документом XML. Объявление DOCTYPE имеет восклицательный знак (!) в начале имени элемента.

    Следование тело DTD. Здесь мы объявляли элемент и атрибут:

Удостоверение личности атрибута для имени элемента определено как:

Здесь тип атрибута CDATA и свое значение #REQUIRED .

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

    Все атрибуты используемые в документе XML необходимо объявить в определении типа документа (DTD) используя объявление Атрибут-Списка

    Атрибуты могут только появиться в старт или пустые бирки.

    Ключевое слово ATTLIST должно находиться в верхушке - случае

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

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

Объявляя атрибуты, вы можете определить как обработчик должен отрегулировать данные которые появляются в значение. Мы можем классифицировать атрибут печатаем внутри 3 главным образом категории на машинке:

    Тип строки

    Типы Tokenized

    Перечисленные типы

Следовать таблица обеспечивает сводку различных типов атрибута:

Тип Описание
CDATA CDATA данные по характера (текст и не повышение цены). Тип атрибута строки .
Удостоверение личности Это уникально обозначение атрибута. Оно не должен появиться больше чем раз. Тип атрибута Tokenized .
IDREF Оно использован для того чтобы снабдить ссылками удостоверение личности другого элемента. Оно использован для того чтобы установить элементы связь между. Тип атрибута Tokenized .
IDREFS Оно использован для того чтобы снабдить ссылками множественное удостоверение личности. Тип атрибута Tokenized .
РЕАЛЬНОСТЬ Она представляет внешнюю реальность в документе. Тип атрибута Tokenized .
РЕАЛЬНОСТИ Оно представляет список внешних реальностей в документе. Тип атрибута Tokenized .
NMTOKEN Оно подобен к CDATA и атрибут со значением состоит из действительного имени XML. Тип атрибута Tokenized .
NMTOKENS Оно подобен к CDATA и атрибут со значением состоит список действительного имени XML. Тип атрибута Tokenized .
НОТАЦИЯ Элемент будет снабжен ссылками к объявленной нотации в документе DTD. Перечисленный тип атрибута .
Обозначение Оно позволяет определить специфический список значений где одно из значений должно соответствовать. Перечисленный тип атрибута .

Объявление атрибута со значением

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

    смогите иметь автоматически принимаемое значение

    смогите иметь фикчированное значение

  • подразумевает

Автоматически принимаемые значения

Он содержит автоматически принимаемое значение. Значения могут быть заключили в одиночные кавычки (") или двойные цитаты (")

Синтаксис

Следование синтаксис значения:

где значени по умолчанию-значение определенный атрибут со значением.

Пример

Следование простой пример объявления атрибута с автоматически принимаемым значением:

]>

Tanmay Patil

В этом примере мы имеем элемент имени с удостоверением личности атрибута которого автоматически принимаемое значение 0 . Автоматически принимаемое значение заключено в пределах двойных цитат.

ФИКЧИРОВАННЫЕ значения

ключевое слово #FIXED следовать фикчированным значением использовано когда вы хотите определить что атрибут со значением постоянн и не может быть изменен. Общяя польза фикчированных атрибутов определяет номера версии.

Синтаксис

Следование синтаксис фикчированных значений:

где #FIXED определенный атрибут со значением.

Пример

Следование простой пример объявления атрибута с ФИКЧИРОВАННЫМ значением:

]>

В этом примере мы использовали #FIXED ключевого слова где оно показывает что значение «tutorialspoint» единственное значение для имени атрибута элемента. Если мы пробуем изменить атрибут со значением после этого, то он дает ошибку.

Следование инвалидный DTD:

]>

we are a free online teaching faculty

НЕОБХОДИМЫЕ значения

Когда вы хотите определите что атрибут необходим, используйте ключевое слово #REQUIRED.

Синтаксис

Следование синтаксис #REQUIRED:

где #REQUIRED определенный тип атрибута.

Пример

Следование простой пример объявления атрибута DTD с ключевым словом #REQUIRED:

]>

Tanmay Patil

В этом примере мы использовали ключевое слово #REQUIRED для того чтобы определить что удостоверение личности атрибута необходимо предусмотреть для имени элемент- имени

ПОДРАЗУМЕВАЕМЫЕ значения

Объявляя атрибуты вы должны всегда определять объявление значения. Если атрибут вы объявляете не имеет никакое автоматически принимаемое значение, то не имеет никакое фикчированное значение, и не требует, тогда вы должны объявить что атрибут как подразумевали . #IMPLIED ключевого слова использовано для того чтобы определить атрибут как подразумевали .

Синтаксис

Следование синтаксис #IMPLIED:

где #IMPLIED определенный тип атрибута.

Пример

Следование простой пример #IMPLIED

]>

В этом примере мы использовали #IMPLIED ключевого слова по мере того как мы не хотим определить любые атрибуты, котор нужно включить в имени элемента. Оно опционный.

Как раз таковыми и являются. Причём XML сам по себе предусматривает расширяемость. Документы созданные с помощью этих языков могут быть «корректными (well-formed)» и «допустимыми (valid)».

С проверкой документа на корректность проблем не возникает: если ошибок не выскочило и всё отобразилось так, как мы хотели, то документ корректен. Например, если в HTML-документе написать что-то вроде « Привет! », то наш документ будет полностью корректен, но проигнорирован браузером. Почему? Потому что браузер ничего не знает о том, что это за «Z» такой. И если мы проверим наш документ на допустимость с помощью валидатора , то документ таковым признан не будет. А как об этом узнает валидатор и на основании чего он вынес такой вердикт?

Допустимость проверяется с помощью определения типа документа (DTD, document type definition). Например, для «строгого» HTML он выглядит так .

DTD может быть описан как внутри документа, так и вынесен в отдельный файл (аналогия с CSS: встроенные и подключаемые таблицы стилей).

Объявление DTD

Объявление DTD располагается перед первым (корневым) элементом документа, начинается с последовательности « ».

Внутреннее DTD описывается так:

Между квадратными скобками располагается содержимое DTD, так называемое внутреннее подмножество , например:

] >

Если DTD вынесено в отдельный файл (обычно имеющий расширение.dtd), то его объявление в документе записывается так:

Соответственно, в этом файле и прописываются все правила, так называемое внешнее подмножество .

Имя, указанное за словом « DOCTYPE » (в нашем случае « catalog »), должно соответствовать имени корневого элемента. То есть, XML-документ должен быть примерно таким:

Hello, world!

Вместо ключевого слова « SYSTEM » может быть использовано слово « PUBLIC », указывающее, что DTD применяется для широкого использования:

Внутренние и внешние подмножества могут быть заданы одновременно (опять же, аналогия с CSS):

] >

Здесь, сначала зачитывается содержимое файла « catalog.dtd », а потом содержимое, указанное внутри квадратных скобок.

Элементы документа

Элементы объявляются в DTD с помощью ключевого слова « ELEMENT », после которого следует имя элемента и его содержимое заключенное в круглые скобки:

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

что соответствует документу:

</book> </p><p>Если у элемента несколько дочерних элементов, то они перечисляются через запятую и должны следовать строго в указанном порядке:</p><p> <!ELEMENT book (title, author)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> </p><p>Приведённый выше пример читается следующим образом. Элемент « book » должен содержать только один элемент « title », за которым должен следовать только один элемент « author ». Сами элементы « title » и « author » никаких элементов не содержат, а могут содержать лишь какой-нибудь текст.</p> <p>С помощью следующих специальных символов можно определять количественное присутствие элемента:</p> <ul><li>Символ « * », следующий после элемента, означает, что элемент может присутствовать один или несколько раз, или не присутствовать вовсе(от нуля до + бесконечности)</li> <li>Символ « + », следующий после элемента, означает, что элемент может присутствовать один или несколько раз(от 1 до + бесконечности)</li> <li>Символ « ? », следующий после элемента, означает, что элемент может либо отсуствовать, либо присутствовать только один раз(0 или 1)</li> </ul> <!ELEMENT book (title, author)> ... <!ELEMENT book (title*, author)> ... <!ELEMENT book (title+, author)> ... <!ELEMENT book (title?, author)> <p>Если существует необходимость указать один из нескольких элементов (или title, или author — любой из них, но не оба), надо испольовать символ « | »:</p><p> <!ELEMENT book (title | author)> </p><p>Текст тоже равноправный участник игры. Ключевое слово « PCDATA » указывает на анализируемые символьные данные, поэтому любой текст содержащий символы разметки (« < », « > » и « & ») будет трактоваться как разметка. Совместное использование текста и элементов называется <i>смешанным содержимым </i>. При объявлении смешанного содержимого, « PCDATA » необходимо указывать первым:</p><p> <!ELEMENT book (#PCDATA | title | author)> </p><p>Следующий фрагмент документа валиден вышеприведенному примеру:</p><p> <book> <title /> </book> <book> <author /> </book> <book> Нет данных </book> </p><p>Группы элементов заключаются в круглые скобки. Элемент « book » должен содержать либо текст, либо (один « title », один или неколько « author » и может быть один « pubyear » именно в таком порядке):</p><p> <!ELEMENT book (#PCDATA | (title, author+, pubyear?))> <!ELEMENT disc (#PCDATA | title)*> </p><p>Данному примеру соответствует следующий фрагмент XML-документа:</p><p> <disc /> <book> <title /> <author /> <author /> </book> <book> Нет данных </book> </p><p>Элемент может быть пустым. Такой элемент не может содержать не дочерних элементов ни текста (например, элемент « br » в HTML). Такой элемент задается с ключевым словом « EMPTY »:</p><p> <!ELEMENT photo EMPTY> </p><p>Элемент также может быть объявлен с ключевым словом « ANY » означающее, что элемент может содержать и элементы, и текст, и все это вместе, и даже быть пустым.</p> <h3>Атрибуты элементов</h3> <p>Элементы в XML-документе могут иметь атрибуты, которые записываются в виде « имя = значение » в открывающем или пустом тегах. Общее объявление атрибутов конкретного элемента начинается с ключевого слова « ATTLIST », после которого следует имя данного элемента и объявления самих атрибутов:</p><p> <!ELEMENT title (#PCDATA)> <!ATTLIST title id CDATA #REQUIRED stock CDATA #IMPLIED> </p><p>Ключевое слово « REQUIRED » указывает на то, что атрибут обязателен. Ключевое слово « IMPLIED », наоборот, говорит, что атрибут необязателен.</p> <p>У атрибутов могут быть перечисленны разрешенные значения:</p><p> <!ATTLIST title readonly (yes|no) #REQUIRED> </p><p>Также может быть задано значение по-умолчанию:</p><p> <!ATTLIST title readonly (yes|no) #REQUIRED "yes"> pubyear CDATA #IMPLIED "2007"> </p><p>Атрибут может быть и константой, то есть у него может быть только то значение, которое заявлено в объявлении атрибута. Делается это с помощью ключевого слова « FIXED »:</p><p> <!ATTLIST title copyright <strong>#FIXED "udvikler"> </p><p>Тип атрибута « CDATA »позволяет использовать любые символы кроме « < », « > », « & », « " » и « " ». В случае использования, данные символы должны быть заменены на спецсимволы типа « < » и т.п. Внимание : в DTD ключевое слово « CDATA » имеет другое значение, чем раздел « CDATA » в XML-документе!</p> <p>Помимо типа CDATA, атрибуты могут иметь следующие типы:</p> <ul><li>NMTOKEN - может содержать только буквы, цифры, « . », « - », « _ » и « : »</li> <li>NMTOKENS - может содержать те же символы, что и « NMTOKEN », а также символы пробела, возврата каретки, перевода строки и табуляции</li> </ul> <!ATTLIST title id CDATA #REQUIRED stock NMTOKEN #IMPLIED publisher NMTOKENS #IMPLIED> <p>Еще один тип атрибута « ID » разрешает задавать те же значения, что и тип NMTOKEN, но начинаться значение должно либо с буквы, либо с « _ », либо с « : ». У любого элемента может быть только один атрибут с типом « ID ». Атрибут типа « ID » не может быть константой (объявляться как « FIXED »). Значение атрибута типа « ID » должно быть уникальным для всего XML-документа:</p><p> <!ELEMENT book (title, author)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ATTLIST title id ID #REQUIRED stock CDATA #IMPLIED> <!ATTLIST author id ID #REQUIRED city CDATA #IMPLIED> </p><p>Атрибут элемента может быть ссылкой на атрибут типа « ID » другого элемента. Для этого он объявляется как атрибут типа « IDREF ». Если атрибут должен ссылаться на атрибут типа « ID » нескольких элементов, то испольуется ключевое слово « IDREFS »:</p><p> <!ELEMENT book (title+, author, year, publisher)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT year (#PCDATA)> <!ELEMENT publisher (#PCDATA)> <!ATTLIST title id ID #REQUIRED> <!ATTLIST author id ID #REQUIRED> <!ATTLIST year ref IDREF #REQUIRED> <!ATTLIST publisher from IDREFS #REQUIRED> </p><p>В XML-документе это будет выглядить так:</p><p> <book> <title id="t1" /> <title id="t2" /> <title id="t3" /> <author id="a1" /> <year ref="t2" /> <publisher from="t1 t2 a1" /> </book> </p><h3>Объявление сущностей</h3> <p>Помимо элементов и их атрибутов, мы можем определить <i>сущности </i>, записываемые с помощью ключевого слова « ENTITY »:</p><p> <!ENTITY name "SuperMegaMaster"> </p><p> <userName>&name;</userName> </p><p>В результате чего, на место имени сущности « name », будет подставлено ее значение, в нашем случае — « SuperMegaMaster ».</p> <p>И для полноты нашего счастья, надо добавить, что атрибуты элементов могут иметь в качестве значения подобные сущности — <i>сущности-атрибуты </i>. Они тоже определяются с помощью ключевого слова « ENTITY », но имеют одно ограничение — они должны ссылаться на внешние неанализируемые сущности, определенные во внешнем подмножестве DTD:</p><p> <!DOCTYPE catalog [ <!ENTITY list SYSTEM "companyList.html" NDATA parse> <!ELEMENT catalog (user+)> <!ELEMENT user (name)> <!ATTLIST user company ENTITY #REQUIRED> <!ELEMENT name (#PCDATA)> ] > </p><p>В вышеприведённом примере, объявлена сущность « list », которая ссылается на внешний документ « companyList.html ». Ключевое слово « NDATA », говорит о том, что внешний документ неявляется XML-документом. Далее, для элемента « user » объявляется атрибут « company », который является обязательным и имеет тип « ENTITY », то есть ссылается на какую-либо сущность. Поскольку в нашем пример задана только одна сущность (« list »), то именно она и только она может быть значением атрибута « company » в XML-документе:</p><p> <catalog> <user company="list"> <name>SuperMegaMaster</name> </user> </catalog> </p><p>Осталось только понять, что означает « parse » в строке объявления сущности « list »? Когда используются неанализируемые данные, то есть те, которые не анализируются синтаксическим анализатором XML, хорошо было бы дать информацию приложению (использующему данный XML-документ), каким образом обработать эту сущность, если все-таки потребуется. Для этого нужно использовать нотацию, задаваемую ключевым словом « NOTATION » и дополнить наш DTD следующим образом:</p><p> <!NOTATION parse SYSTEM "iexlorer"> <!ENTITY list SYSTEM "companyList.html" NDATA parse> </p><p>Слово « parse » в объявлении сущности лист указывает на то, каким образом можно проанализировать файл « companyList.html » — найти нотацию с именем « parse » и следовать ее указаниям. В нашем случае, приложение может открыть MS InternetExplorer и загрузить в него документ « companyList.html ».</p> <h3></h3> <p>В <b>XML </b>- документах <b>DTD </b> определяет набор действительных элементов, идентифицирует элементы, которые могут находиться в других элементах, и определяет действительные атрибуты для каждого из них. Синтаксис <b>DTD </b> весьма своеобразен и от автора-разработчика требуются дополнительные усилия при создании таких документов(сложность <b>DTD </b> является одной из причин того, что использование <b>SGML </b>, требующего определение <b>DTD </b> для любого документа, не получило столь широкого распространения как, например, <b>HTML </b>). Как уже отмечалось, в <b>XML </b> использовать <b>DTD </b> не обязательно - документы, созданные без этих правил, будут правильно обрабатываться программой-анализатором, если они удовлетворяют основным требованиям синтаксиса <b>XML </b>. Однако контроль за типами элементов и корректностью отношений между ними в этом случае будет полностью возлагаться на автора документа. До тех пор, пока грамматика нашего нового языка не описана, его сможем использовать только мы, и для этого мы будем вынуждены применять специально разработанное программное обеспечение, а не универсальные программы-анализаторы.. </p> <p>В <b>DTD </b> для <b>XML </b> используются следующие типы правил: правила для элементов и их атрибутов, описания категорий(макроопределений), описание форматов бинарных данных. Все они описывают основные конструкции языка - элементы, атрибуты, символьные константы внешние файлы бинарных данных. </p> <p>Для того, чтобы использовать <b>DTD </b> в нашем документе, мы можем или описать его во внешнем файле и при описании <b>DTD </b> просто указать ссылку на этот файл или же непосредственно внутри самого документа выделить область, в которой определить нужные правила. В первом случае в документе указывается имя файла, содержащего <b>DTD </b>- описания: </p> <span><?xml version="1.0" standalone="yes" ?> <! DOCTYPE journal SYSTEM "journal.dtd"> ... </span> <p>Внутри же документа DTD- декларации включаются следующим образом: </p> <span>... <! DOCTYPE journal [ <!ELEMENT journal (contacts, issues, authors)> ... ]> ... </span> <p>В том случае, если используются одновременно внутренние и внешние описания, то программой-анализатором будут сначала рассматриваться внутренние, т.е. их приоритет выше. При проверке документа <b>XML </b>- процессор в первую очередь ищет <b>DTD </b> внутри документа. Если правила внутри документа не определены и не задан атрибут </span> standalone ="yes" <span> , то программа загрузит указанный внешний файл и правила, находящиеся в нем, будут считаны оттуда. Если же атрибут <b>standalone </b>имеет значение "<b>yes" </b>, то использование внешних <b>DTD </b> описаний будет запрещено. </p> <h4><span>Определение элемента </span></h4> <p>Элемент в <b>DTD </b> определяется с помощью дескриптора!<b>ELEMENT </b>, в котором указывается название элемента и структура его содержимого. </p> <p>Например, для элемента <flower> можно определить следующее правило: </p> <!ELEMENT flower PCDATA> <p>Ключевое слово <b>ELEMENT </b> указывает, что данной инструкцией будет описываться элемент <b>XML </b>. Внутри этой инструкции задается название элемента<b> (flower) </b>и тип его содержимого. </p> <p>В определении элемента мы указываем сначала название элемента<b>(flower) </b>, а затем его модель содержимого - определяем, какие другие элементы или типы данных могут встречаться внутри него. В данном случае содержимое элемента flower будет определяться при помощи специального маркера <b>PCDATA </b>(что означает </span> parseable character data <span> - любая информация, с которой может работать программа-анализатор). Существует еще две инструкции, определяющие тип содержимого: <b>EMPTY </b>,<b>ANY </b>. Первая указывает на то, что элемент должен быть пустым(например, </span><red/> <span>), вторая - на то, что содержимое элемента специально не описывается. </p> <p>Последовательность дочерних для текущего элемента объектов задается в виде списка разделенных запятыми названий элементов. При этом для того, чтобы указать количество повторений включений этих элементов могут использоваться символы +,*, ? : </p> <span><!ELEMENT issue (title, author+, table-of-contents?)> </span> <p>В этом примере указывается, что внутри элемента <issue> должны быть определены элементы <b>title </b>, <b>author </b> и <b>table-of-contents </b>, причем элемент <b>title </b> является обязательным элементом и может встречаться лишь однажды, элемент author может встречаться несколько раз, а элемент <b>table-of-contents </b>является опциональным, т.е. может отсутствовать. В том случае, если существует несколько возможных вариантов содержимого определяемого элемента, их следует разделять при помощи символа <b>"|" </b>: </p> <span><!ELEMENT flower (PCDATA | title)*> </span> <p>Символ <b>* </b>в этом примере указывает на то, что определяемая последовательность внутренних элементов может быть повторена несколько раз или же совсем не использоваться. </p> <p>Если в определении элемента указывается "смешанное" содержимое, т.е. текстовые данные или набор элементов, то необходимо сначала указать <b>PCDATA </b>, а затем разделенный символом <b>"|" </b> список элементов. </p> <p>Пример корректного <b>XML </b>- документа: </p> <span><?xml version="1.0"?> <! DOCTYPE journal [ <!ELEMENT contacts (address, tel+, email?)> <!ELEMENT address (street, appt)> <!ELEMENT street PCDATA> <!ELEMENT appt (PCDATA | EMPTY)*> <!ELEMENT tel PCDATA> <!ELEMENT email PCDATA> ]> ... <contacts> <address> <street>Marks avenue</street> <appt id="4"> </address> <tel>12-12-12</tel> <tel>46-23-62</tel> <email>info@j.com</email> </contacts> </span> <h4><span><b>Определение атрибутов </b> </span></h4> <p>Списки атрибутов элемента определяются с помощью ключевого слова!<b>ATTLIST </b>. Внутри него задаются названия атрибутов, типы их значений и дополнительные параметры. Например, для элемента </span><article> <span>могут быть определены следующие атрибуты: </p> <span><!ATTLIST article id ID #REQUIRED about CDATA #IMPLIED type (actual | review | teach) "actual" "" > </span> <p>В данном примере для элемента <b>article </b>определяются три атрибута: <b>id, </b><i> </i><b>about </b>и <b>type </b>,которые имеют типы <b>ID </b>(идентификатор), <b>CDATA </b> и список возможных значений соответственно. Всего существует шесть возможных типов значений атрибута: </p> <ul><li><span><b>CDATA </b> - содержимым документа могут быть любые символьные данные </span></li> <li><span><b>ID </b> - определяет уникальный идентификатор элемента в документе </span></li> <li><span><b>IDREF </b>(<b>IDREFS </b>)- указывает, что значением атрибута должно выступать название(или несколько таких названий, разделенных пробелами во втором случае) уникального идентификатора определенного в этом документе элемента </span></li> <li><span><b>ENTITY </b>(<b>ENTITIES </b>) - значение атрибута должно быть названием(или списком названий, если используется <b>ENTITIES </b>) компонента (макроопределения), определенного в документе </span></li> <li><span><b>NMTOKEN </b> (<b>NMTOKENS </b>) - содержимым элемента может быть только одно отдельное слово(т.е. этот параметр является ограниченным вариантом <b>CDATA </b>) </span></li> <li><span>Список допустимых значений - определяется список значений, которые может иметь данный атрибут. </span></li> </ul><p>Также в определении атрибута можно использовать следующие параметры: </p> <ul><li><span><b>#REQUIRED </b> - определяет обязательный атрибут, который должен быть задан во всех элементах данного типа </span></li> <li><span><b>#IMPLIED </b> - атрибут не является обязательным </span></li> <li><span><b>#FIXED </b> "значение" - указывает, что атрибут должен иметь только указанное значение, однако само определение атрибута не является обязательным, но в процессе разбора его значение в любом случае будет передано программе-анализатору </span></li> <li><span>Значение - задает значение атрибута по умолчанию </span></li> </ul><h4><span><b>Определение компонентов(макроопределений) </b> </span></h4> <p>Компонент <b>(entity) </b>представляет собой определения, содержимое которых может быть повторно использовано в документе. В других языках программирования подобные элементы называются макроопределениями. Создаются <b>DTD </b>- компоненты при помощи инструкции <b>!ENTITY </b>: </p> <span><!ENTITY hello " Мы рады приветствовать Вас!" > </span> <p>Программа-анализатор, просматривая в первую очередь содержимое области <b>DTD </b>- определений, обработает эту инструкцию и при дальнейшем разборе документа будет использовать содержимое <b>DTD </b>- компонента в том месте, где будет встречаться его название. Т.е. теперь в документе мы можем использовать выражение <b>&hello </b>; , которое будет заменено на строчку <i>" </i><b>Мы рады приветствовать Вас" </b> </p> <p>В общем случае, внутри <b>DTD </b> можно задать три типа макроопределений: </p> <p><b>Внутренние макроопределения </b> </span><span>- предназначены для определения строковой константы, с их помощью можно организовывать ссылки на часто изменяемую информацию, делая документ более читабельным. Внутренние компоненты включаются в документ при помощи амперсанта <b>& </b> </p> <p>В <b>XML </b> существует пять предустановленных внутренних символьных констант: </p> <ul><li><span><b>< </b> - символ <b>"<" </b> </span></li> <li><span><b>> </b>- символ <b>">" </b> </span></li> <li><span><b>& </b> - символ <b>"&" </b> </span></li> <li><span><b>" </b>- символ апострофа<b> """ </b> </span></li> <li><span><b>" </b>- символ двойной кавычки <b>""" </b> </span></li> </ul><p><b>Внешние макроопределения </b> </span><span>- указывают на содержимое внешнего файла, причем этим содержимым могут быть как текстовые, так и двоичные данные. В первом случае в месте использования макроса будут вставлены текстовые строки, во втором - бинарные данные, которые анализатором не рассматриваются и используются внешними программами </p> <span><!ENTITY logotype SYSTEM "/image.gif" NDATA GIF87A> </span> <p><b>Макроопределения правил </b> </span><span>- макроопределения параметров могут использоваться только внутри области DTD и обозначаются специальным символом <b>% </b>, вставляемым перед названием макроса. При этом содержимое компонента будет помещено непосредственно в текст <b>DTD </b>- правила </p> <p>Например, для следующего фрагмента документа: </p> <span><!ELEMENT name (PCDATA)> <!ELEMENT title (PCDATA | name)*> <!ELEMENT author (PCDATA | name)*> <!ELEMENT article (title, author)*> <!ELEMENT book (title, author)*> <!ELEMENT bookstore (book | article)*> <!ELEMENT bookshelf (book | article)*> </span> <p>можно использовать более короткую форму записи: </p> <span><!ELEMENT name (PCDATA)> <! ENTITY %names "PCDATA | name"> <!ELEMENT article (%names;)*> <!ELEMENT book (%names;)*> <!ENTITY %content "book | article"> <!ELEMENT bookstore (%content;)*> <!ELEMENT bookshelf (%content;)*> </span> <p>Макроопределения часто используются для описания параметров в правилах атрибутов. В этом случае появляется возможность использовать одинаковые определения атрибутов для различных элементов: </p> <span><!ENTITY %itemattr "id ID #IMPLIED src CDATA"> <!ENTITY %bookattr "ISDN ID #IMPLIED type CDATA"> <!ENTITY %artattr " size CDATA"> <!ELEMENT book (title, author,content)*> <!ATTLIST book %itemattr %bookattr;> <!ELEMENT article (title, author, content)*> <!ATTLIST article %itemattr %artattr;> </span> <h4><span><b>Типизация данных </b> </span></h4> <p>Довольно часто при создании <b>XML </b>- элемента разработчику требуется определить, данные какого типа могут использоваться в качестве его содержимого. Т.е. если мы определяем элемент </span><span><last-modified>10.10.98</last-modified> </span><span>, то хотим быть уверенными, что в документе в этом месте будет находиться строка, представляющая собой дату, а не число или произвольную последовательность символов. Используя типизацию данных, можно создавать элементы, значения которых могут использоваться, например, в качестве параметров <b>SQL </b>- запросов. Программа клиент в этом случае должна знать, к какому типу данных относится текущее значение элемента и в случае соответствия формирует <b>SQL </b>-запрос. </p> <p>Если в качестве программы на стороне клиента используется верифицирующий <b>XML </b>-процессор, то информацию о типе можно передавать при помощи специально созданного для этого атрибута элемента, имеющего соответствующее <b>DTD </b>- определение. В процессе разбора программа-анализатор передаст значение этого атрибута клиентскому приложению, которое сможет использовать эту информацию должным образом. Например, чтобы указать, что содержимое элемента должно быть длинным целым, можно использовать следующее <b>DTD </b>- определение: </p> <span><!ELEMENT counter (PCDATA)> <!ATTLIST counter data_long CDATA #FIXED "LONG"> </span> <p>Задав атрибуту значение по умолчанию <b>LONG </b> и определив его как <b>FIXED </b>, мы позволили тем самым программе-клиенту получить необходимую информацию о типе содержимого данного элемента, и теперь она может самостоятельно определить соответствие типа этого содержимого указанному в <b>DTD </b>- определении. </p> <p>Вот пример <b>XML </b>- документа, в котором определяются и используются несколько элементов с различными типами данных: </p> <span><!ELEMENT price (PCDATA)> <!ATTLIST price data_currency CDATA #FIXED "CURRENCY"> <!ELEMENT rooms_num (PCDATA)> <!ATTLIST rooms_num data_byte CDATA #FIXED "BYTE"> <!ELEMENT floor (PCDATA)> <!ATTLIST floor data_byte CDATA #FIXED "INTEGER"> <!ELEMENT living_space (PCDATA)> <!ATTLIST living_space data_float CDATA #FIXED "FLOAT"> <!ELEMENT counter (PCDATA)> <!ATTLIST counter data_long CDATA #FIXED "LONG"> <!ELEMENT is_tel (PCDATA)> <!ATTLIST is_tel data_bool CDATA #FIXED "BOOL"> <!ELEMENT house (rooms_num, floor,living_space, is_tel, counter, price)> <!ATTLIST house id ID #REQUIED> ... <house id="0"> <rooms_num>5</rooms_num> <floor>2</floor> <living_space>32.5</living_space> <is_tel>true</is_tel> <counter>18346</counter> <price>34 р. 28 к.</price> </house> ... </span> <p>Как видно из примера, механизм создания элементов документа при этом нисколько не изменился. Все необходимая для проверки типов данных информация заложена в определения элементов внутри блока <b>DTD </b>. </p> <p>В заключении хотелось бы отметить, что <b>DTD </b> предоставляет нам весьма удобный механизм осуществления контроля за содержимым документа. На сегодняшний день, практически все программы просмотра документов Интернет используют <b>DTD </b>-правила. Однако это далеко не единственный способ проверки корректности документа. В настоящий момент в <b>W3 </b> консорциуме находится на рассмотрении новый стандарт языка описания структуры документов, называемый схемами данных. Следующий раздел посвящен работе с ними. </p></td> <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 class="clear"></div> <div class="afterpage author_rank"> <div class="social"> <div class="expert-title">Поделись статьей:</div> <div style="float:left" class="yashare-auto-init" data-yashareL10n="ru" data-yashareQuickServices="yaru,vkontakte,facebook,twitter,odnoklassniki,moimir,gplus" data-yasharetheme="counter" data-yasharetype="big"></div> </div> <div class="clear"></div> </div> <div class="clear"></div> <div class="clear"></div> <div class="related_posts"> <div class="title">Похожие статьи<span></span></div> <ul> <div class='yarpp-related'> <li> <div> <div class="top"> <div class="replace post_243"> <div class="img_border"> <span></span> <img src="/uploads/7de0c5c0eea2c52b8ae4427e1d7571d2.jpg" alt="Виртуальные деньги - это реальные деньги" title="Виртуальные деньги - это реальные деньги" loading=lazy> </div> </div> </div> <div class="clear"></div> <div class="info"> <div class="date">17 апреля 2015</div> <a class="replace post_243" href="/novye-dengi-virtualnye-kak-nazyvayutsya-virtualnye-dengi.html">Виртуальные деньги - это реальные деньги</a> </div> </div> <div class="clear"></div> </li> <li> <div> <div class="top"> <div class="replace post_243"> <div class="img_border"> <span></span> <img src="/uploads/b306f161ecd12f6c1f5eeef11b2996bf.jpg" alt="Перенос Windows на другой пустой жёсткий диск программой AOMEI Partition Assistant Перестановка hdd с системой на другой компьютер" title="Перенос Windows на другой пустой жёсткий диск программой AOMEI Partition Assistant Перестановка hdd с системой на другой компьютер" loading=lazy> </div> </div> </div> <div class="clear"></div> <div class="info"> <div class="date">17 апреля 2015</div> <a class="replace post_243" href="/pochemu-ne-zapuskaetsya-windows-pri-perenose-zhestkogo-diska-na-drugoi-kompyuter.html">Перенос Windows на другой пустой жёсткий диск программой AOMEI Partition Assistant Перестановка hdd с системой на другой компьютер</a> </div> </div> <div class="clear"></div> </li> <li> <div> <div class="top"> <div class="replace post_243"> <div class="img_border"> <span></span> <img src="/uploads/f44730ea83d1dff972fb804db6a4cf55.jpg" alt="Скачать iTunes на Windows" title="Скачать iTunes на Windows" loading=lazy> </div> </div> </div> <div class="clear"></div> <div class="info"> <div class="date">17 апреля 2015</div> <a class="replace post_243" href="/poslednyaya-versiya-aityuns-dlya-kompyutera-skachat-itunes-na-windows.html">Скачать iTunes на Windows</a> </div> </div> <div class="clear"></div> </li> <li> <div> <div class="top"> <div class="replace post_243"> <div class="img_border"> <span></span> <img src="/uploads/471d00b8cf710772eaafc3a2274b1bf8.jpg" alt="ShadowBan в Instagram – как выйти из тени (инструкция по выживанию) Скрытый бан аккаунта в instagram" title="ShadowBan в Instagram – как выйти из тени (инструкция по выживанию) Скрытый бан аккаунта в instagram" loading=lazy> </div> </div> </div> <div class="clear"></div> <div class="info"> <div class="date">17 апреля 2015</div> <a class="replace post_243" href="/shadowban-kak-vyvesti-stranicu-iz-teni-v-instagram-shadowban-v-instagram-kak-vyiti-iz-teni.html">ShadowBan в Instagram – как выйти из тени (инструкция по выживанию) Скрытый бан аккаунта в instagram</a> </div> </div> <div class="clear"></div> </li> </div> </ul> </div> <div class="clear"></div> <div class="clear"></div> <div class="bread_wrap" xmlns:v="http://rdf.data-vocabulary.org/#"> </div> <div class="clear"></div> </div> <div class="sidebar col-xs-12 col-md-3 col-lg-3"> <div class="aside nav podrubriki"><div class="first_title"></div><div class="subnavtitle">Типы<span></span></div><ul class="subnav"> <li><span class="asideli related-link" data-href="/category/routers/">Роутеры</span></li> <li><span class="asideli related-link" data-href="/category/hard-drives/">Жесткие диски</span></li> <li><span class="asideli related-link" data-href="/category/not-included/">Не включается</span></li> <li><span class="asideli related-link" data-href="/category/printers/">Принтеры</span></li> <li><span class="asideli related-link" data-href="/category/inhibits/">Тормозит</span></li> <li><span class="asideli related-link" data-href="/category/hangs/">Зависает</span></li> <li><span class="asideli related-link" data-href="/category/viruses/">Вирусы</span></li> <li><span class="asideli related-link" data-href="/category/tablets/">Планшеты</span></li> </div> <div class="clear"></div> <div class="sidebar_pop_articles"> <div class="title">Популярные статьи<span></span></div> <ul> <li> <div class="replace post_87"> <div class="top"> <div class="img_border"> <span></span> <img src="https://i1.wp.com/smartphonus.com/wp-content/uploads/2015/01/012815_1226_32.png" alt="GSM-модуль Starline — чем он хорош и как установить?" title="GSM-модуль Starline — чем он хорош и как установить?" loading=lazy> </div> </div> <div class="info"> <a href="/kak-pravilno-otklyuchat-mobilnyi-modul-na-smartfone-gsm-modul-starline.html" class="replace post_87">GSM-модуль Starline — чем он хорош и как установить?</a> </div> </div> <div class="clear"></div> </li> <li> <div class="replace post_87"> <div class="top"> <div class="img_border"> <span></span> <img src="https://i1.wp.com/im.macovod.net/wp-content/uploads/2010/03/custom-expose-shortcuts.jpg" alt="Виджеты в Dashboard Как закрыть dashboard" title="Виджеты в Dashboard Как закрыть dashboard" loading=lazy> </div> </div> <div class="info"> <a href="/kak-polnostyu-otklyuchit-dashboard-v-os-x-mavericks-vidzhety-v-dashboard-kak.html" class="replace post_87">Виджеты в Dashboard Как закрыть dashboard</a> </div> </div> <div class="clear"></div> </li> <li> <div class="replace post_87"> <div class="top"> <div class="img_border"> <span></span> <img src="https://i0.wp.com/elektrikaetoprosto.ru/u/colormuzik213.jpg" alt="Транзистор КТ815: параметры, цоколёвка и аналоги Кт 815 в каком режиме работает" title="Транзистор КТ815: параметры, цоколёвка и аналоги Кт 815 в каком режиме работает" loading=lazy> </div> </div> <div class="info"> <a href="/tranzistor-kt815-parametry-cokol-vka-i-analogi-tranzistor-kt815-parametry.html" class="replace post_87">Транзистор КТ815: параметры, цоколёвка и аналоги Кт 815 в каком режиме работает</a> </div> </div> <div class="clear"></div> </li> <li> <div class="replace post_87"> <div class="top"> <div class="img_border"> <span></span> <img src="https://i0.wp.com/center-comptech.ru/img/problem2.jpg" alt="Не обнаружен ключ защиты программы 7" title="Не обнаружен ключ защиты программы 7" loading=lazy> </div> </div> <div class="info"> <a href="/ne-obnaruzhen-klyuch-zashchity-programmy-7-7-problemy-s-klyuchami.html" class="replace post_87">Не обнаружен ключ защиты программы 7</a> </div> </div> <div class="clear"></div> </li> <li> <div class="replace post_87"> <div class="top"> <div class="img_border"> <span></span> <img src="https://i1.wp.com/master1c8.ru/wp-content/uploads/2017/06/%D0%B3%D0%BB5_5_21.png" alt="RLS – гибкая и тонкая настройка ограничений доступа к данным" title="RLS – гибкая и тонкая настройка ограничений доступа к данным" loading=lazy> </div> </div> <div class="info"> <a href="/1s-ogranichenie-dostupa-k-dannym-na-urovne-zapisei-rls-gibkaya-i-tonkaya-nastroika.html" class="replace post_87">RLS – гибкая и тонкая настройка ограничений доступа к данным</a> </div> </div> <div class="clear"></div> </li> <li> <div class="replace post_87"> <div class="top"> <div class="img_border"> <span></span> <img src="https://i0.wp.com/os-helper.ru/wp-content/uploads/2017/11/WinX-2.png" alt="Как включить поддержку в BIOS?" title="Как включить поддержку в BIOS?" loading=lazy> </div> </div> <div class="info"> <a href="/chto-takoe-hyper-threading-kak-vklyuchit-podderzhku-v-bios-hyper-v-v-windows.html" class="replace post_87">Как включить поддержку в BIOS?</a> </div> </div> <div class="clear"></div> </li> </ul> <div class="clear"></div> </div> <div class="clear"></div> <div class="sidebar_new_articles"> <div class="title">Новые статьи<span></span></div> <ul> <li> <a href="/kak-vstavit-krasivye-smaily-v-kommentarii-i-posty-vkontakte-kak-vstavit.html" class="replace post_1054">Как вставить смайлики во вконтакте</a> <div class="clear"></div> </li> <li> <a href="/chto-mozhno-ukazat-dlya-formalnogo-ispolnitelya-informatika-izdatelskii-dom-pervoe-sentyabrya-is.html" class="replace post_1054">Что можно указать для формального исполнителя</a> <div class="clear"></div> </li> <li> <a href="/kak-udalit-stranicu-v-vkontakte-god-kak-udalit-stranicu-v.html" class="replace post_1054">Как удалить страницу в ВК?</a> <div class="clear"></div> </li> <li> <a href="/podklyuchenie-noutbuka-kak-monitora-k-kompyuteru-kak-ispolzovat-noutbuk-kak-monitor-dlya-kompyutera.html" class="replace post_1054">Как использовать ноутбук как монитор для компьютера</a> <div class="clear"></div> </li> <li> <a href="/podklyuchenie-k-energoinformacionnomu-polyu-puteshestvie-v-informacionnoe-pole.html" class="replace post_1054">Путешествие в информационное поле</a> <div class="clear"></div> </li> </ul> <div class="clear"></div> </div> <div class="clear"></div> <div class="sidebar_question"> <div id="dirace1" style="height:300px;width:200px;" align="center"></div> </div><p></p><div class="clear"></div></div> </div> <div class="clear"></div> <div class="section morkovin-antireklama-sidebar Closure"><div id="smartrotator_ad_1610"></div></div> </div> <div class="clear"></div> <div class="clear"></div> </div> </div> <div class="clear"></div> <footer class="footer"> <div class="kartasajta"><a href="/sitemap.xml">Карта сайта</a></div> <div class="top_footer"> <div class="inner"> <div class="footer_col col-xs-6 col-sm-4 col-md-4"> <span data-href="/" class="related-link logo"> <div class="logo_text1"><img src="/public/logo.png" loading=lazy></div> </span> <div class="clear"></div> <p class="copyright"> © 2024 anyhost.ru - Сайт о компьютерах и комплектующих<br /> <span></span> </p> </div> <div class="footer_col col-xs-12 col-sm-2 col-md-2"> <p class="foot_cat_title">Другое</p> <ul class="categories"> <li><span class="related-link" data-href="">О сайте</span></li> <li><span class="related-link" data-href="">Реклама</span></li> <li><span class="related-link" data-href="/feedback.html">Контакты</span></li> </ul> </div> <div class="footer_col col-xs-6 col-sm-2 col-md-2 rubric_col"> <p class="foot_cat_title">Рубрики</p> <ul id="nav" class="categories"> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="/category/routers/">Роутеры</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="/category/hard-drives/">Жесткие диски</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="/category/not-included/">Не включается</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="/category/printers/">Принтеры</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="/category/inhibits/">Тормозит</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="/category/hangs/">Зависает</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="/category/viruses/">Вирусы</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="/category/tablets/">Планшеты</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="/category/installation/">Установка устройств</a></li> <li id="menu-item-" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="/category/application/">Приложения</a></li> </ul> </div> <div class="clear"></div> </div> </div> <div class="clear"></div> </footer> <div id="toTop"></div> <script type="text/javascript" src="https://anyhost.ru/wp-content/plugins/service_binet/ajax.js"></script><button id="responsive-menu-button" class="responsive-menu-button responsive-menu-boring responsive-menu-accessible" type="button" aria-label="Menu"> <span class="responsive-menu-box"> <span class="responsive-menu-inner"></span> </span> </button><div id="responsive-menu-container" class="slide-left" style="padding:20px;"> <ul> <li><a style="color:white;" href="/category/routers/">Роутеры</a></li> <li><a style="color:white;" href="/category/hard-drives/">Жесткие диски</a></li> <li><a style="color:white;" href="/category/not-included/">Не включается</a></li> <li><a style="color:white;" href="/category/printers/">Принтеры</a></li> <li><a style="color:white;" href="/category/inhibits/">Тормозит</a></li> <li><a style="color:white;" href="/category/hangs/">Зависает</a></li> <li><a style="color:white;" href="/category/viruses/">Вирусы</a></li> <li><a style="color:white;" href="/category/tablets/">Планшеты</a></li> <li><a style="color:white;" href="/category/installation/">Установка устройств</a></li> <li><a style="color:white;" href="/category/application/">Приложения</a></li> </ul> </div> <link rel='stylesheet' id='yarppRelatedCss-css' href='/wp-content/plugins/yet-another-related-posts-plugin/style/related.css?ver=4.9.1' type='text/css' media='all' /> <script type='text/javascript' src='https://anyhost.ru/wp-content/plugins/wp-postratings/js/postratings-js.js?ver=1.85'></script> <script type='text/javascript'> /* <![CDATA[ */ var JQLBSettings = { "fitToScreen":"1","resizeSpeed":"400","displayDownloadLink":"0","navbarOnTop":"0","loopImages":"","resizeCenter":"","marginSize":"0","linkTarget":"","help":"","prevLinkTitle":"previous image","nextLinkTitle":"next image","prevLinkText":"\u00ab Previous","nextLinkText":"Next \u00bb","closeTitle":"close image gallery","image":"Image ","of":" of ","download":"Download","jqlb_overlay_opacity":"80","jqlb_overlay_color":"#000000","jqlb_overlay_close":"1","jqlb_border_width":"10","jqlb_border_color":"#ffffff","jqlb_border_radius":"0","jqlb_image_info_background_transparency":"100","jqlb_image_info_bg_color":"#ffffff","jqlb_image_info_text_color":"#000000","jqlb_image_info_text_fontsize":"10","jqlb_show_text_for_image":"1","jqlb_next_image_title":"next image","jqlb_previous_image_title":"previous image","jqlb_next_button_image":"http:\/\/anyhost.ru\/wp-content\/plugins\/wp-lightbox-2\/styles\/images\/ru_RU\/next.gif","jqlb_previous_button_image":"http:\/\/anyhost.ru\/wp-content\/plugins\/wp-lightbox-2\/styles\/images\/ru_RU\/prev.gif","jqlb_maximum_width":"","jqlb_maximum_height":"","jqlb_show_close_button":"1","jqlb_close_image_title":"close image gallery","jqlb_close_image_max_heght":"22","jqlb_image_for_close_lightbox":"http:\/\/anyhost.ru\/wp-content\/plugins\/wp-lightbox-2\/styles\/images\/ru_RU\/closelabel.gif","jqlb_keyboard_navigation":"1","jqlb_popup_size_fix":"0"} ; /* ]]> */ </script> <script type='text/javascript' src='https://anyhost.ru/wp-content/plugins/wp-lightbox-2/wp-lightbox-2.min.js?ver=1.3.4.1'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=4.9.1'></script> <script async="async" type='text/javascript' src='https://anyhost.ru/wp-content/plugins/akismet/_inc/form.js?ver=4.0.1'></script> </body> <script src="https://anyhost.ru/wp-content/themes/avada/js/jquery.jshowoff.min.js"></script> <script> (function($){ $(window).scroll(function() { if($(this).scrollTop() > 200) { $('#toTop').fadeIn(100); } else { $('#toTop').fadeOut(100); } } ); $('#toTop').click(function() { $('body,html').animate({ scrollTop:0} ,400); } ); $('.navbar-toggle').click(function(e){ e.preventDefault(); $('#navbar').show(500); $('.wrapper, footer, body, .mobile_search').addClass('righted'); $('.navbar-toggle').fadeOut(500); } ); $('.mobile_close').click(function(e){ e.preventDefault(); $('#navbar').hide(500); $('.wrapper, footer, body, .mobile_search').removeClass('righted'); $('.navbar-toggle').fadeIn(500); } ); $('#features').jshowoff({ autoPlay: true, hoverPause: false, speed:3000, changeSpeed: 200, links: true, effect: 'fade', controls: false } ); } )(jQuery); </script> <script type="text/javascript" src="//yandex.st/share/share.js" charset="utf-8"></script> </html>