1.5.3 MXML结构组成
第一,MXML语言是一种XML语言,所以它的结构符合XML语言结构规范。第二,MXML语言是专门用于Flex程序中的XML语言,是用来描述应用程序界面的,所以,它的结构又有其特殊性。下面,来看MXML文件的结构内容。
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx=http://www.adobe.com/2006/mxml layout="absolute"> … </mx:Application>
第一行声明XML文件采用的语法版本号和文件采用的编码格式。
第二行是mx:Application标签。mx:Application标签是一个特殊的标签。作为程序入口的运行文件只有一个,主文件的标示是根节点为mx:Application,一个程序中只能出现一个mx:Application节点。属性xmlns:mx=http://www.adobe.com/2006/mxml,表示将mx定义为XML的命名空间。xmlns标签专门用来定义XML的命名空间,XML命名空间可以用来定义一套独立的XML标签,并且为这些标签指定特殊的解析方式。比如,XML文件中默认的标签格式为:<Button>node</Button>,这里的Button节点作为一个普通的文本节点,没有特殊的意义。定义命名空间后,在节点上加上空间前缀:<mx:Button>node</mx:Button>这时候就代表mx空间下的Button对象。
mx命名空间对应的路径是“http://www.adobe.com/2006/mxml”,Flex的配置文件中将这个路径定义为一个全局资源标识符,并对应了一个XML文件。在这个文件中,列出了mx命名空间下的所有标签。在Flex SDK 3.4.0目录下的frameworks目录中找到flex-config.xml文件,打开并找到如下内容:
<namespaces> <namespace> <uri>http://www.adobe.com/2006/mxml</uri> <manifest>mxml-manifest.xml</manifest> </namespace> </namespaces>
从上面可以发现,“http://www.adobe.com/2006/mxml”的uri和mxml-manifest.xml文件对应,打开该文件,该文件列出了MXML中的所有标签与标签关联的类文件路径。如下所示:
<?xml version="1.0"?> <componentPackage> <component id="FileSystemComboBox" class="mx.controls.FileSystemComboBox"/> <component id="FileSystemDataGrid" class="mx.controls.FileSystemDataGrid"/> … <component id="WebService" class="mx.rpc.soap.mxml.WebService"/> <component id="WebServiceOperation" class="mx.rpc.soap.mxml.Operation"/> </componentPackage>
在开发中,当程序有很多MXML文件和AS文件时,为了方便调用,我们可以将功能相似的文件放在一个文件夹中,定义一个命名空间。在定义命名空间时,为了方便使用,一般直接指定命名空间包括的标签路径。例如:
xmlns:myComp="components.*"
上面使用了通配符“*”,components目录下所有的MXML文件和ActionScript类文件都被包括在myComp命名空间下。例如,components中有一个Loginpanel.mxml,则程序中调用这个文件时,代码如下:
<myComp: Loginpanel></myComp: Loginpanel>
myComp下的标签被自动指向components文件,当标签数量较多而且分布在不同文件夹时,可以效仿Flex配置文件的做法,使用XML文件来描述。