Руководство по actionscript. часть 3, стр. 067
Для обращения к уточненным пространствам имен элементам и атрибутам из листинга 18.14 мы должны сначала получить ссылку на используемые пространства имен. Чтобы получить ссылку на пространство http: / /www. example. com/ furniture, мы вызываем метод экземпляра namespace ( ) класса XML над корневым узлом документа, передавая в качестве аргумента префикс «shop». В результате метод namespace ( ) возвращает объект Namespace, представляющий пространство имен http://www. example. com/furniture. Мы присваиваем этот объект переменной shopNS для дальнейшего использования, var shopNS:Namespace = catalog. namespaceCshop»);
В качестве альтернативы, если известен идентификатор URI пространства имен, можно создать ссылку на объект Namespace, используя конструктор одноименного класса:
var shopNS:Namespace = new Namespace(«http://www. example. com/furniture»):
Чтобы получить ссылку на пространство имен, используемое по умолчанию, мы вызываем метод namespace ( ) над корневым узлом документа, не передавая префикс пространства имен:
var htmlNS:Namespace = catalog. namespace( ):
В качестве альтернативы, если известен идентификатор URI пространства имен, мы можем создать ссылку на объект Namespace, используемый по умолчанию, с помощью конструктора одноименного класса:
var htmlNS:Namespace = new Namespace(«http://www. w3.org/1999/xhtml»);
Для обращения к пространствам имен документа могут использоваться и методы inScopeNamespaces ( ) и namespaceDeclarations ( ). Дополнительную информацию можно найти в справочнике по языку ActionScript корпорации Adobe.
В расширении Е4Х атрибуты пространств имен XML не представляются в виде атрибутов (то есть к ним нельзя обратиться с помощью метода attributesC) или выражения некийЭлемент.®*). Вместо этого для обращения к объявлениям пространств имен элемента применяется метод экземпляра namespaceDeclarations() класса XML.
Теперь, когда у нас есть ссылка на объект Namespace, мы можем обращаться к уточненным пространством имен элементам и атрибутам, используя уточненные имена в следующем общем формате:
пространствоИмен::локальноеИмяЭлемента пространствоИмен::$локальноеИмяАтрибута
Например, вот так записывается уточненное имя элемента в коде на языке ActionScript:
shopNS::price
Обратите внимание на использование оператора уточнителя имени (: :), который отделяет имя пространства имен от локального имени.
Вот так можно обратиться к элементу
catalog. htmlNS::body
Для обращения к элементу, который является ребенком элемента , используется следующая запись:
catalog. htmlNS::body. shopNS::table
Для обращения к атрибуту shop: id используется такая запись:
catalog. htmlNS::body. shopNS::table.@shopNS::id
Для обращения к элементу мы можем использовать следующий «кошмарный» код:
catalog. htmlNS::body. shopNS: -.table. htmlNS::table. htmlNS: :tr[ 1].htmlNS::td[l].shopNS::price
Однако мы будем спать спокойнее, если воспользуемся преимуществом оператора «потомок» (. .) в двух местах, как показано в следующем коде:
catalog. .shopNS: -.table. .shopNS: :price
И все равно повторное использование shopNS: : слегка раздражает. Мы можем избежать нескольких лишних нажатий клавиш, попросив язык ActionScript автоматически уточнять все неуточненные имена элементов и атрибутов с помощью
выбранного пространства имен. Для этого мы используем инструкцию назначения пространства имен XML по умолчанию, которая имеет следующий вид:
default xml namespace = пространствоИменИлиСтрокаиЙ1
Например, следующий код заставляет язык ActionScript автоматически уточнять все неуточненные имена элементов и атрибутов с помощью пространства имен http://www. example. com/furniture:
default xml namespace = shopNS;
После выполнения этой инструкции пространство имен http: / / www. example. com/ furniture применяется ко всем неуточненным ссылкам на элементы и атрибуты, поэтому мы можем сократить следующий код:
catalog..shopNS::table..shopNS::price
до записи:
catalog..table..price
» «|СяР Из»за ошибки в приложении Flash Player 9 при выполнении предыдущего примера кода 1—1 (catalog..table..price) в первый раз возвращается значение undefined.