ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > 综合应用 > 细品RibbonX(13):初识XML

细品RibbonX(13):初识XML

作者:绿色风 分类: 时间:2022-08-17 浏览:181
楼主
gouweicao78
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”/>

上面的问题在于注释被插入到了未关闭的代码块中。
2楼
omnw
阅读完毕,留下脚印

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap