Руководство по actionscript. часть 3, стр. 041
Обращение к атрибутам и элементам
с зарезервированными символами в именах
Если имя атрибута или элемента содержит символ, который считается недопустимым для использования в идентификаторах языка ActionScript (например, дефис), вы не сможете обратиться к этому атрибуту или элементу с помощью оператора «точка». Вместо этого необходимо использовать метод attribute ( ), child ( ) или оператор [ ]. Например:
var saleEndsDate:XML = February 1, 2006 trace(saleEndsDate. mME-ZONE); // НЕДОПУСТИМО! He делайте так.
trace(saleEndsDate. attribute(«TIME-ZONE»)): // Допустимо. Делайте так. traceCsaleEndsDate.@["TIME-ZONE"]): // Тоже допустимо.
В случае с недопустимым кодом saleEndsDate. @ TIME-ZONE среда выполнения Flash трактует дефис как операцию вычитания и интерпретирует выражение как saleEndsDate. @Т1МЕ минус ZONE! По всей видимости, переменная (или метод) с именем ZONE не существует, поэтому среда выполнения Flash сгенерирует следующее сообщение об ошибке:
Access of undefined property ‘ZONE’
По-русски это будет выглядеть так: Обращение к неопределенному свойству ‘ZONE’.
Однако если бы переменная ZONE существовала, ее значение было бы вычтено из пустого объекта XMLList, представленного выражением saleEndsDate. @Т1МЕ, и никакой ошибки не возникло бы! Без сообщений об ошибках неправильное обращение к элементу saleEndsDate. @TIME-ZONE будет очень сложно выявить. Принимая во внимание, что атрибут saleEndsDate. @TI ME не существует, нам бы хотелось, чтобы среда выполнения Flash сгенерировала ошибку «несуществующего атрибута», но, к сожалению, в версии спецификации Е4Х, реализованной в языке ActionScript 3.0, оговаривается, что в результате обращения к несуществующим атрибутам должен возвращаться пустой объект XMLL i s t, не приводя к возникновению ошибки. Будущие версии языка ActionScript могут исправить эту ситуацию.
Мы завершили рассмотрение базовых приемов обращения к данным XML. Перед тем как продолжить изучение расширения Е4Х, еще раз вернемся к важной теме, касающейся интерпретации экземпляра класса XMLList в качестве экземпляра класса XML.
Интерпретация объекта XMLList как экземпляра класса XML
Как мы уже знаем, в расширении Е4Х ссылка на объект XMLList, содержащий всего один экземпляр класса XML, может рассматриваться как ссылка на этот экземпляр. Например, мы видели, что выражение:
novel. AUTHORC0].setName(«WRITER»):
эквивалентно выражению:
novel. AUTHOR. setNameC»WRITER»): // Опущен [0]
Они являются эквивалентными, потому что выражение novel. AUTHOR ссылается на объект XMLList, содержащий всего один экземпляр класса XML (элемент