打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
细品RibbonX(13):初识XML
XML是扩展标记语言(Extensible Markup Language的缩写,最初由W3C发布。XML不是真正的编程语言,因为它缺乏执行操作的某种机制,相反,XML是一组规则,其意图是简化跨平台的数据共享。

Office 2007文件以MicrosoftOpenXML格式发布,是包含几个XML文件的一个简单的压缩容器。使用XML格式的文件具有下列优点:

1XML文件能够明显地节省空间。

2)通过XML结构化数据后,能够快速地被索引,因而能使其他程序通过索引搜索到特定的字符串或其他项目。

3)对于开发者来说,能够链接某个应用程序里的XML架构来验证XML而确保代码像意料中的那样工作。例如前面介绍的CustomUI EditorXML Notepad,如果没有这些架构,CustomUI Editor将不能验证代码,XML Notepad不能提供智能感知功能。

当然,我们之所以关心XML,是因为XML功能区的核心。要定制Office 2007用户界面,必须编写XML代码。虽然VBA在定制界面时也能起到关键的作用,但它不是必需的。而XML在定制中几乎总是必需的,但也有例外。例如弹出式菜单和一些出现在加载项选项卡中的VBA定制。

下面,我们来了解如何构成XML代码,以及如何编写XML

标签(Tags

先看看下面的代码片断:

<group id=”rxgrpTest”>

<button idMso=”Bold”/>

<button idMso=”Italic”/>

<splitButton id=”rxsbtnTest”>

    <button idMso=”Underline”/>

</splitButton>

</group>

留意上面代码的结构,注意<>/号的使用,这些符号在XML中有特定的用途:指出了标签的开始和结束位置。例如,开始的<group>标签和结束的</group>标签之间的内容包含了在功能区中显示的组。

在组里面列出的splitButton标签使用与组相同的结构,以<splitButton>标签开始,接着包含了所有的项目直至由</splitButton>标签结束。本例中,仅仅下划线按钮出现在拆分按钮中。

现在,看看按钮本身的代码,注意到/号位于标签的结尾,这样就不需要单独的标签来关闭元素。

这里演示了用于开始和结束XML标签的两种方法。您需要理解和使用这两种方法来创建自定义UI的结构。如下所示:

开始和关闭标签分开:<element attribute(s)=”Value”></element>

开始和关闭标签未分开:<element attribute(s)=”Value”/>

通过上面的例子,应该了解到:

1)在XML中,每个标签至少包含一个元素并且通常至少有一个属性。

2)在处理代码时,涉及的每个项目都被称作对象object。例如,对象包括功能区中的组、按钮、复选框、甚至是菜单。许多对象都有子对象。当某控件有子控件时,该控件称作为父控件。注意,父对象通常(但不总是)有不同类型的子对象。选项卡有一个或多个组对象作为子对象,并且一个组可能有按钮、复选框和动态菜单子对象的组合。其中,dynamicMenu对象除了其他子对象类型外,还有dynamicMenu子对象。某些父对象甚至有完整的子对象群,称之为集合(collection)。

每个子对象同时也是它自已的子对象的父对象。每个子对象控件必须嵌套在其父对象的开始和结束标签中。并且,每个子对象仅可能有一个父对象。

3)为了创建格式良好(有效的)XML,必须理解:所有的标签,无论是元素还是属性,都区分大小写,即SPLITBUTTON元素与splitButton元素不相同。属性值必须被放置在单引号或双引号内。在父元素中的子元素的嵌套必须准确,每个开始标签必须与其结束标签相匹配,或者使用“/>”结束在相同的标签内,或者在后面使用单独的标签。

元素(Elements

当处理功能区的XML时,可以看到每个元素指定功能区控件(或结构)的特定部分。

对于初学者来说不容易弄清楚标签和元素的区别,然而很容易定义:group是一个元素,而<group>是一个标签。因此,标签实质上是通过<>符号识别代码块的标志。

每个标签必须包括一个且唯一一个元素。此外,元素总是XML标签的第一部分,告诉编译器希望开始处理或者停止处理的特定项目。

属性(Attributes

标签告诉编译器要处理的对象,而属性告诉编译器该对象的特性,例如对象的名称、在屏幕中显示的标题以及是否对象可见。

与元素不同的是,在所给标签内可以为对象设置多个属性。例如,下面的代码片断显示了带有多个属性的标签示例:

<button id=”rxbtnProtectAll”

    size=”normal”

    label=”Protect All Sheets”

    imageMso=”ReviewProtectWorkbook”

onAction=”rxbtnProtectAll_click”/>

上面的代码提供给按钮一个唯一的id并指定了大小、标签文本和图像,还提供了一个onAction回调签名,当单击该按钮时启动相应的VBA过程。

1id属性

在创建额外的对象之前,需要探讨如何在代码中识别这些对象。而id属性用于识别在自定义XML代码内特定的对象,为其提供名称,使得后面能够使用该名称引用该对象。这是引用对象的唯一方法。在下列容器中每个对象都需要id属性:

n         contextualTabs

n         officeMenu

n         qat

n         tabs

id属性有几种不同的类型并且每一个都有不同的用途。下面列出了id属性的不同类型及其主要用途。

n         id属性用于唯一地标识控件。如果动态地装载项目,其属性将被赋值。

n         idMso属性用于唯一地标识内置控件、选项卡、命令,等等。使用该属性与内置对象交互。

n         idQ属性用于跨共享的命名空间引用对象。

为了识别某对象,只需简单地在开始标签中添加id属性,例如,要通过id引用某选项卡,使用下列XML

<tab id=”rxtab”

    <!—放置其它的选项卡属性! –>

</tab>

同样地,如果试图引用内置的字体(Font)组,则使用下面的XML

<group idMso=”Font”

    <!—放置其它的组属性! –>

</group>

注意,所有的ididQ属性都是唯一的。如果使用已存在的id,或者由Microsoft保留的id,将会导致错误并阻止装载自定义用户界面。

为了避免与内置的控件相冲突,建议所有自定义控件使用标准的命名约定加上前缀。

2label属性

label属性指定用户能够在屏幕上读取的内容,它不必是唯一的,但应该合乎逻辑、简洁明了且一致。label属性为用户提供了清晰的向导。要为控件添加标签文本,使用下面所示的代码:

<tab id=”rxtab”

    label=”My Custom Tab”>

</tab>

XML代码的排版技巧

在编写代码时,建议使用硬回车或制表符将代码分成逻辑块,使代码更容易阅读和理解。看看下面的示例代码,非常清晰,更容易阅读:

<group

    id=”rxgrp”

    label=”My First Group”>

 

    <button

        id=”rxbtn1″

        imageMso=”Italic”

        label=”Large size button”

        size=”large”

        onAction=”rxbtn1_Click”/>

 

    <button

        id=”rxbtn2″

        imageMso=”Bold”

        label=”Normal size button”

        size=”normal”

        onAction=”rxbtn2_Click”/>

 

    <button

        id=”rxbtn3″

        imageMso=”WrapText”

        label=”Normal size button”

        size=”normal”

        onAction=”rxbtn3_Click”/>

 

    <button

        id=”rxbtn4″

        imageMso=”ConditionalFormatting”

        label=”Normal size button”

        size=”normal”

        onAction=”rxbtn4_Click”/>

</group>

XML代码中创建注释

注释能够使自已或他人清楚代码的作用。

放置注释的方法是:在开始处放置一个小于号(<),然后输入感叹号(!),随后是两个连字号(),结束注释需要两个连字号加一个大于号(>),例如:

<!—这是一段注释 –>

如果注释很长,可能需要几行,那么可以按如下所示编写:

<!–

这是一段相当长的注释。因为您想使用长的注释解释这段代码有什么作用,各个符号代码什么意思,以帮助您以后好理解。

–>

<!––>之间的内容被当作连续的注释。

此外,不能够将注释放置在一块开始的XML代码的中间。下面的示例来进行演示:

<!—这是我的按钮 –>

<button id=”rxbtn”

    label=”This is my button”

    imageMso=”HappyFace”

    size=”large”

    onAction=”rxbtn_Click”/>

或:

<button id=”rxbtn”

    label=”This is my button”

    imageMso=”HappyFace”

    size=”large”

onAction=”rxbtn_Click”>

<!—这是我的按钮 –>

</button>

上述两段代码都是正确的,但下面的代码会产生错误:

<button id=”rxbtn”

<!—这是我的按钮 –>

    label=”This is my button”

    imageMso=”HappyFace”

    size=”large”

    onAction=”rxbtn_Click”/>

上面的问题在于注释被插入到了未关闭的代码块中。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA专题10-9:使用VBA操控Excel界面之在功能区中添加自定义按钮控件
优化MyBatis配置文件中的配置
jxpath与xpath
Mybatis初始化过程简单总结
[置顶]HTML代码中IMG标签的全部属性
VAB中的XML
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服