XML 名前空間の使用

Flash Player 9 以降、Adobe AIR 1.0 以降

XML オブジェクト(またはドキュメント)に含まれるデータの種類は、そのオブジェクトの名前空間によって特定されます。例えば、メッセージ通信プロトコルとして SOAP を使用する Web サービスに対して XML データを送信または提供する場合は、その XML の開始タグにおいて次のように名前空間を宣言します。

var message:XML =  
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
    soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">  
        <soap:Body xmlns:w="http://www.test.com/weather/"> 
            <w:getWeatherResponse>  
                <w:tempurature >78</w:tempurature>  
            </w:getWeatherResponse>  
        </soap:Body>  
    </soap:Envelope>;

この名前空間は soap という接頭辞を持ち、 http://schemas.xmlsoap.org/soap/envelope/ という URI において定義されています。

ActionScript 3.0 には、XML の名前空間を扱うための Namespace クラスが用意されています。 前の例に示した XML オブジェクトに対する Namespace クラスの使用例を次に示します。

var soapNS:Namespace = message.namespace("soap"); 
trace(soapNS); // Output: http://schemas.xmlsoap.org/soap/envelope/ 
 
var wNS:Namespace = new Namespace("w", "http://www.test.com/weather/"); 
message.addNamespace(wNS); 
var encodingStyle:XMLList = message.@soapNS::encodingStyle; 
var body:XMLList = message.soapNS::Body; 
 
message.soapNS::Body.wNS::GetWeatherResponse.wNS::tempurature = "78";

XML クラスには、名前空間の扱いに関するメソッドとして、 addNamespace() inScopeNamespaces() localName() name() namespace() namespaceDeclarations() removeNamespace() setLocalName() setName() 、および setNamespace() があります。

default xml namespace ディレクティブは、XML オブジェクトのデフォルトの名前空間を割り当てるために使用します。例えば、次の例では、 x1 x2 がいずれも同じデフォルトの名前空間を持ちます。

var ns1:Namespace = new Namespace("http://www.example.com/namespaces/"); 
default xml namespace = ns1; 
var x1:XML = <test1 />; 
var x2:XML = <test2 />;