Чтение онлайн

на главную - закладки

Жанры

JavaScript. Подробное руководство, 6-е издание
Шрифт:

var names2 = pt..name;

Расширение E4X позволяет использовать даже оператор шаблона:

// Получить все вложенные теги <element>.

// Это еще один способ получить список всех тегов <пате>.

var names3 = pt.element.*;

Расширение E4X отличает имена атрибутов от имен тегов с

помощью символа @ (этот синтаксис заимствован из языка XPath). Например, значение атрибута можно запросить, как показано ниже:

// Получить атомное число гелия

var atomicNumber = pt.element[1].@id;

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

// Список свех атрибутов всех тегов <element>

var atomicNums = pt.element.@*;

Расширение E4X включает даже мощные и удивительно выразительные синтаксические конструкции для фильтрации списков с помощью произвольных выражений-предикатов:

// Отфильтровать список всех элементов так, чтобы

// он включал только элементы с атрибутом id < 3

var lightElements = pt.element.(@id < 3);

// Отфильтровать список всех тегов <element> так, чтобы он включал только те.

// имена которых начинаются с символа "Б". Затем создать список тегов <пате>

// из оставшихся тегов <element>.

var bElementNames = pt.element.(name.charAt(0) == 'Б').name;

Цикл

fог/each
, с которым мы познакомились выше в этой главе (раздел 11.4.1), в расширении Е4Х дополнен возможностью итераций по спискам тегов и атрибутов XML. Напомню, что цикл
for/each
похож на цикл
for/in
, за исключением того, что вместо итераций по свойствам объекта он выполняет итерации по значениям свойств:

// Вывести названия всех элементов периодической таблицы

for each (var е in pt.element) {

console.log(e.name);

}

// Вывести атомные числа элементов

for each (var n in pt.element.@*) console.log(n);

В расширении E4X выражения могут присутствовать

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

// Изменить тег <element> для Водорода - добавить в него новый атрибут

// и новый дочерний элемент, чтобы он выглядел так:

//

// <element id="1" symbol="B">

// <name>Водород</name>

// <weight>1.00794</weight>

// </element>

//

pt.element[0].@symbol = "B";

pt.element[0].weight = 1.00794;

Так же легко можно удалять теги и атрибуты, используя стандартный оператор delete:

delete pt.element[0].©symbol; // удалить атрибут

delete pt..weight; // удалить все теги <weight>

Расширение E4X реализовано так, что позволяет выполнять большинство типичных операций с документами XML с помощью привычного синтаксиса языка. В Е4Х также имеются методы, которые можно вызывать относительно объектов XML. Например, метод

insertChildBefore:

pt.insertChildBefore(pt.element[ 1],

<element id="1"><name>Дeйтepий</name></element>);

Расширение E4X полностью поддерживает пространства имен, а также включает синтаксические конструкции и функции для работы с пространствами имен XML:

// Объявить пространство имен по умолчанию с помощью инструкции

// "default xml namespace" statement:

default xml namespace = " http://www.w3.org/1999/xhtml ";

// Следующий документ xhtml содержит несколько тегов svg:

d = <html>

<body>

Маленький красный квадрат:

<svg xmlns=" http://www.w3.org/2000/svg " width="10" height="10">

<rect x="0" y="0" width="10" height="10" fill="red"/>

Поделиться:
Популярные книги

Адепт. Том второй. Каникулы

Бубела Олег Николаевич
7. Совсем не герой
Фантастика:
фэнтези
попаданцы
9.05
рейтинг книги
Адепт. Том второй. Каникулы

Звездная Кровь. Экзарх III

Рокотов Алексей
3. Экзарх
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Звездная Кровь. Экзарх III

Эпоха Опустошителя. Том II

Павлов Вел
2. Вечное Ристалище
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Эпоха Опустошителя. Том II

И в аду есть герои

Панов Вадим Юрьевич
5. Тайный Город
Фантастика:
боевая фантастика
9.19
рейтинг книги
И в аду есть герои

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Курс 1. Сентябрь

Фокс Гарри
1. Маркатис
Фантастика:
аниме
фэнтези
сказочная фантастика
5.00
рейтинг книги
Курс 1. Сентябрь

Проклятый Лекарь. Том 2

Молотов Виктор
2. Анатомия Тьмы
Фантастика:
фэнтези
попаданцы
7.00
рейтинг книги
Проклятый Лекарь. Том 2

Я еще князь. Книга XX

Дрейк Сириус
20. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще князь. Книга XX

Инженер Петра Великого 4

Гросов Виктор
4. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Инженер Петра Великого 4

Железное пламя

Яррос Ребекка
Фантастика:
фэнтези
5.00
рейтинг книги
Железное пламя

Отверженный. Дилогия

Опсокополос Алексис
Отверженный
Фантастика:
фэнтези
7.51
рейтинг книги
Отверженный. Дилогия

Кодекс Крови. Книга IХ

Борзых М.
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IХ

Идеальный мир для Лекаря 26

Сапфир Олег
26. Лекарь
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Идеальный мир для Лекаря 26

Моров. Том 8

Кощеев Владимир
7. Моров
Фантастика:
альтернативная история
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Моров. Том 8