请好心人帮忙翻译一篇XML教程(源代码不用翻译)(50分)

  • 主题发起人 香槟女孩
  • 开始时间

香槟女孩

Unregistered / Unconfirmed
GUEST, unregistred user!
Part 1: Folder Tree Creation
Welcome to Advanced UI Design Using XML and XSL. Each article in my series will demonstrate the creation of a specific user interface (UI) component using eXtensible Markup Language (XML) and eXtensible Stylesheet Language (XSL). This article explains how to create a folder tree of unlimited depth by using XML and XSL, the style-sheet language for XML. The folder tree discussed in this article functions by taking an XML feed of a specific format and applying an XSL style sheet to it. The resulting transformation is then
printed to the client. The client handles all requests to expand, collapse, maximize or minimize entities within the tree, or the whole tree itself. The client used in this article is Internet Explorer 5.5+.
The actual folder tree demonstrated is available fordo
wnload at the end of this article.
Folder -Tree-Specific Architecture
Like most Web page objects, there are several ways to build them. When developing your specific folder tree, you should keep in mind some architectural decisions adherent to a folder tree such as:
1. Nesting
2. Lines
Nesting
Figure 1. No nesting within the browser Figure 2. Nesting within the browser
In Both Figures 1 and 2 borders were temporarily applied to the tree so that one can more easily see the relationships and nesting of objects within thedo
cument Object Model (DOM).
Lines
Lines within your tree can provide a greater visual effect and make larger tree structures easier to read. The negative effect on having lines within your tree is performance. A tree with 100 items may use about 300 images just to display the relationship between entities. Caching and preloading images can help, but they still exist as individual objects within thedo
M. Without lines, simple indenting can show the relationship between parent and child. In this article I will demonstrate the creation of a tree without lines.
XML Structure
All corporations' requirements differ from one another. Odds are the requirements I have for my tree are much different than the requirements you may have for yours. XML provides us with the perfect interface to describe our unique tree entities. The format you choose will have a direct effect on your XSL style sheets and your client operations. The format I have chosen is good for a recursive XSL style sheet, which satisfies the requirement within this article for a folder tree of unlimited depth.
The XMLdo
cument I have constructed contains a root element named "tree" that can contain only "entity" elements. The structure of your tree is implicitly defined here by nesting entity elements within the "contents" element of other entity elements. Below is a listing of all elements or attributes that belong to the "entity" element.
Name Type Description
id Attribute Unique string or integer used to identify the individual entity
description Element Description of individual entity. This is the text displayed to the user.
onClick Element Name of the client-side function fired upon the onClick event
image Element Image displayed when entity is closed or not selected
imageOpen Element Image displayed when entity is open
contents Element Contains entity elements. The content element is used to determine whether or not an entity has children.
Within your individual trees, use the entity element to append specific data about each object in your tree. This could be the ID of a record in a database that the entity is representing. In upcoming articles I will demonstrate how to create an entity-specific context menu that is implemented by the addition of an "oncontextmenu" element to our entity element.
The following XML is the XML we will be using in this article. For illustration purposes I have created a static XMLdo
cument instead of implementing a dynamic XML database query.
<?xml version="1.0"?>
<tree>
<entity id="e1">
<description>Customers</description>
<oncontextmenu></oncontextmenu>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<contents>
<entity id="e2">
<description>Microsoft</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick>displayCustomer(12345)</onClick>
<contents>
<entity id="e3">
<description>Orders</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick></onClick>
<contents/>
</entity>
</contents>
</entity>
<entity id="e4">
<description>IBM</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick>displayCustomer(12346)</onClick>
<contents>
<entity id="e5">
<description>Orders</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick></onClick>
<contents/>
</entity>
</contents>
</entity>
<entity id="e6">
<description>Sun Microsystems</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick>displayCustomer(12347)</onClick>
<contents>
<entity id="e7">
<description>Orders</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick></onClick>
<contents>
<entity id="e8">
<description>#12345</description>
<image>images/paper.gif</image>
<imageOpen>images/paper.gif</imageOpen>
<onClick></onClick>
<contents/>
</entity>
<entity id="e9">
<description>#12346</description>
<image>images/paper.gif</image>
<imageOpen>images/paper.gif</imageOpen>
<onClick></onClick>
<contents/>
</entity>
</contents>
</entity>
</contents>
</entity>
<entity id="e10">
<description>Oracle</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick>displayCustomer(12348)</onClick>
<contents>
<entity id="e11">
<description>Orders</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick></onClick>
<contents/>
</entity>
</contents>
</entity>
</contents>
</entity>
<entity id="e12">
<description>Reports</description>
<oncontextmenu></oncontextmenu>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<contents>
<entity id="e13">
<description>Income</description>
<oncontextmenu></oncontextmenu>
<image>images/paper.gif</image>
<imageOpen>images/paper.gif</imageOpen>
<contents>
</contents>
</entity>
<entity id="e14">
<description>Expenses</description>
<oncontextmenu></oncontextmenu>
<image>images/paper.gif</image>
<imageOpen>images/paper.gif</imageOpen>
<contents>
</contents>
</entity>
</contents>
</entity>
</tree>
The above XML file is named "tree.xml" and is available fordo
wnload at the end of this article.
XSL Style Sheet
Both Figures 1 and 2 were the result of transformations with our XMLdo
cument and separate XSL style sheets. Below is the standard XSL style sheet that is applied to our XMLdo
cument(s).
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" language="JavaScript">
<xsl:template match="tree">
<xsl:apply-templates select="entity"/>
</xsl:template>
<xsl:template match="entity">
<div onclick="window.event.cancelBubble = true;clickOnEntity(this);" onselectstart="return false" ondragstart="return false">
<xsl:attribute name="image"><xsl:value-of select="image"/></xsl:attribute>
<xsl:attribute name="imageOpen"><xsl:value-of select="imageOpen"/></xsl:attribute>
<xsl:attribute name="open">false</xsl:attribute>
<xsl:attribute name="id">f<xsl:value-of select="@id"/></xsl:attribute>
<xsl:attribute name="open">false</xsl:attribute>
<xsl:attribute name="STYLE">
padding-left: 20px;
cursor: hand;
<xsl:if expr="depth(this) > 2">
display: none;
</xsl:if>
</xsl:attribute>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="middle">
<img border="0" id="image">
<xsl:attribute name="SRC">
<xsl:value-of select="image"/>
</xsl:attribute>
</img>
</td>
<td valign="middle" nowrap="true">
<xsl:attribute name="STYLE">
padding-left: 7px;
font-family: Verdana;
font-size: 11px;
font-color: black;
</xsl:attribute>
<xsl:value-of select="description"/></td>
</tr>
</table>
<xsl:apply-templates select="contents/entity"/>
</div>
</xsl:template>
</xsl:stylesheet>
Figure 3 (below) displays the folder tree that is created using the above XSL style sheet.

Figure 3. XSL transformation
Client Operations
In order for our folder tree to function, we require the following client-side operations:
1. Initialize
2. Expand
3. Collapse
4. Expand All (Maximize)
5. Collapse All (Minimize)
Below is the code that performs these five operations. This code can be found within the "tree.js" file included with this article.
function initialize() {
var xmlDoc
var xslDoc
xmlDoc = new ActiveXObject('Microsoft.XMLDOM')
xmlDoc.async = false;
xslDoc = new ActiveXObject('Microsoft.XMLDOM')
xslDoc.async = false;
xmlDoc.load("tree/tree.xml")
xslDoc.load("tree/tree.xsl")
folderTree.innerHTML = xmlDoc.documentElement.transformNode(xslDoc)
}
function clickOnEntity(entity) {
if(entity.open == "false") {
expand(entity, true)
}
else
{
collapse(entity)
}
window.event.cancelBubble = true
}
function expand(entity) {
var oImage
oImage = entity.childNodes(0).all["image"]
oImage.src = entity.imageOpen
for(i=0;
i < entity.childNodes.length;
i++) {
if(entity.childNodes(i).tagName == "DIV") {
entity.childNodes(i).style.display = "block"
}
}
entity.open = "true"
}
function collapse(entity) {
var oImage
var i
oImage = entity.childNodes(0).all["image"]
oImage.src = entity.image // collapse and hide children
for(i=0;
i < entity.childNodes.length;
i++) {
if(entity.childNodes(i).tagName == "DIV") {
if(entity.id != "folderTree") entity.childNodes(i).style.display = "none"
collapse(entity.childNodes(i))
}
}
entity.open = "false"
}
function expandAll(entity) {
var oImage
var i
expand(entity, false) // expand children
for(i=0;
i < entity.childNodes.length;
i++) {
if(entity.childNodes(i).tagName == "DIV") {
expandAll(entity.childNodes(i))
}
}
}
Future of Web-Based Folder Trees
As Web technologies grow, they allow us to maintain state within our Web applications. This increases the complexity of our interfaces as more operations are moved from server to client. This is a blessing that will increase the usability of our interfaces and the performance of our applications by taking the load off of our servers.
In future articles I may expand on the tree discussed in this article by explaining how to create an API to dynamically insert, remove, rename, and refresh objects within your trees.
Closing
I hope the contents of this article will help increase the quality of your Web applications interface. If you have any questions, comments, or suggestions, please feel free to email me at the address listed in the author section.
On a side note, I would like to thank Lee McGraw for helping me proofread and validate thisdo
cument.
The second article in this series addresses custom context menu creation.
Download
Download the example.zip file that contains the files that make up the tree, including tree.xsl, tree.xml, tree.js, tree.css, common.js, and images.
 
B

Bahl

Unregistered / Unconfirmed
GUEST, unregistred user!
才50分?太少了!
 
L

ljsh2008

Unregistered / Unconfirmed
GUEST, unregistred user!
B

bill_max

Unregistered / Unconfirmed
GUEST, unregistred user!
有不少客套话,翻译了你也是掠看的,
我看干脆只翻译其中的重要点的那些部份就行了,
省时省力:)
 
J

jsxjd

Unregistered / Unconfirmed
GUEST, unregistred user!
////////////////////////////////////////////////////////////
Part 1: Folder Tree Creation
第一部分 折叠树的建立
Welcome to Advanced UI Design Using XML and XSL. Each article in my series will demonstrate the creation of a specific user interface (UI) component using eXtensible Markup Language (XML) and eXtensible Stylesheet Language (XSL). This article explains how to create a folder tree of unlimited depth by using XML and XSL, the style-sheet language for XML. The folder tree discussed in this article functions by taking an XML feed of a specific format and applying an XSL style sheet to it. The resulting transformation is then
printed to the client. The client handles all requests to expand, collapse, maximize or minimize entities within the tree, or the whole tree itself. The client used in this article is Internet Explorer 5.5+.
欢迎使用XML和XSL进行高级用户界面设计。这个序列的每篇文章将示范
使用XML和XSL建立独特的用户界面。本篇说明如何通过使用XML,XSL(XML样
式表)建立无深度限制的折叠树。本篇讨论的折叠树通过导入特定格式的XML,
并对XML应用样式表进行运作。最终转换的结果显示在客户端。客户端处理所
有的请求,包括在树中对实体进行展开、收缩、最大化或最小化,以及对整
棵树的操作。本篇适用于使用IE5.5以上的客户端。
The actual folder tree demonstrated is available fordo
wnload at the end of this article.
这里演示的折叠树可以通过点击本文末尾的链接下载。
Folder -Tree-Specific Architecture
折叠树的特定结构
Like most Web page objects, there are several ways to build them. When developing your specific folder tree, you should keep in mind some architectural decisions adherent to a folder tree such as:
和大多数Web页对象一样,有多种方法建立折叠树。当开发特定折叠树时,
在你的脑子里应该有适用于折叠树的结构化判定,比如:
1. Nesting 嵌套
2. Lines 线条
Nesting
Figure 1. No nesting within the browser Figure 2. Nesting within the browser
图1 在浏览器中没有嵌套 图2 在浏览器中有嵌套
In Both Figures 1 and 2 borders were temporarily applied to the tree so that one can more easily see the relationships and nesting of objects within thedo
cument Object Model (DOM).
在图1和图2中,对树临时使用了边框,这样更容易看清楚文档对象模型中对象的
关系和嵌套。
Lines
Lines within your tree can provide a greater visual effect and make larger tree structures easier to read. The negative effect on having lines within your tree is performance. A tree with 100 items may use about 300 images just to display the relationship between entities. Caching and preloading images can help, but they still exist as individual objects within thedo
M. Without lines, simple indenting can show the relationship between parent and child. In this article I will demonstrate the creation of a tree without lines.
在树中的线条可以起到更好的视觉效果,并且使大的树容易阅读。在树中带线条
的副作用是性能。有100个项的树可能使用大约300个图象,这仅仅是为了显示各实体
之间的关系。虽然缓冲和预装载对这方面会有所帮助,但是在文档对象模型中它们仍
然是作为独立的对象存在的。如果不使用线条,简单地缩排也能表示父子关系。本遍
将演示不带线条的树的建立。
XML Structure
XML结构
All corporations' requirements differ from one another. Odds are the requirements I have for my tree are much different than the requirements you may have for yours. XML provides us with the perfect interface to describe our unique tree entities. The format you choose will have a direct effect on your XSL style sheets and your client operations. The format I have chosen is good for a recursive XSL style sheet, which satisfies the requirement within this article for a folder tree of unlimited depth.
所有企业的需求是不同的。差异在于:我的树的需求和你的树的需求不同。
XML为我们提供了完美界面来描述我们独特的树实体。你所选择的格式会对你
的XSL样式表和客户端操作产生直接的效果。我所选择的格式非常适合于递归
XSL样式表,能满足本文中建立无深度限制折叠树的要求。
The XMLdo
cument I have constructed contains a root element named "tree" that can contain only "entity" elements. The structure of your tree is implicitly defined here by nesting entity elements within the "contents" element of other entity elements. Below is a listing of all elements or attributes that belong to the "entity" element.
我构造的XML文档包含一个名为“tree”的根元素,该元素只能包含
“entity”元素。通过在其它entity元素的“contents”元素中嵌入
entity元素,树的结构就这么隐含地定义了。下面列出了“entity”元素
所拥有的全部元素和属性。
Name Type Description
id Attribute Unique string or integer used to identify the individual entity
id属性:用来标识独立实体的字符串或整数
description Element Description of individual entity. This is the text displayed to the user.
description元素:独立实体的描述。是显示给用户的文本。
onClick Element Name of the client-side function fired upon the onClick event
onClick元素:onClick事件的客户端函数名。
image Element Image displayed when entity is closed or not selected
image元素:当实体处理关闭或未选中状态时显示的图象
imageOpen Element Image displayed when entity is open
imageOpen元素:实体处理打开状态时显示的图象
contents Element Contains entity elements. The content element is used to determine whether or not an entity has children.
contents元素:包含实体元素entity。contents元素用来判定一个元素是否有子孙.
Within your individual trees, use the entity element to append specific data about each object in your tree. This could be the ID of a record in a database that the entity is representing. In upcoming articles I will demonstrate how to create an entity-specific context menu that is implemented by the addition of an "oncontextmenu" element to our entity element.
在独立的树中,使用entity元素来追加关于树中每个对象的特定数据。
这样的元素可以是实体表示的数据库中记录的ID。在后续的文章中,会示
范如何建立特定实体的上下文菜单,这是通过给entity元素添加一个额外
的元素"oncontextmenu"实现的。
The following XML is the XML we will be using in this article. For illustration purposes I have created a static XMLdo
cument instead of implementing a dynamic XML database query.
下面是本文使用的XML。为了便于说明,我建立了一个静态XML文档,
而没有实现动态XML数据库查询。
<?xml version="1.0"?>
<tree>
<entity id="e1">
<description>Customers</description>
<oncontextmenu></oncontextmenu>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<contents>
<entity id="e2">
<description>Microsoft</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick>displayCustomer(12345)</onClick>
<contents>
<entity id="e3">
<description>Orders</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick></onClick>
<contents/>
</entity>
</contents>
</entity>
<entity id="e4">
<description>IBM</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick>displayCustomer(12346)</onClick>
<contents>
<entity id="e5">
<description>Orders</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick></onClick>
<contents/>
</entity>
</contents>
</entity>
<entity id="e6">
<description>Sun Microsystems</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick>displayCustomer(12347)</onClick>
<contents>
<entity id="e7">
<description>Orders</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick></onClick>
<contents>
<entity id="e8">
<description>#12345</description>
<image>images/paper.gif</image>
<imageOpen>images/paper.gif</imageOpen>
<onClick></onClick>
<contents/>
</entity>
<entity id="e9">
<description>#12346</description>
<image>images/paper.gif</image>
<imageOpen>images/paper.gif</imageOpen>
<onClick></onClick>
<contents/>
</entity>
</contents>
</entity>
</contents>
</entity>
<entity id="e10">
<description>Oracle</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick>displayCustomer(12348)</onClick>
<contents>
<entity id="e11">
<description>Orders</description>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<onClick></onClick>
<contents/>
</entity>
</contents>
</entity>
</contents>
</entity>
<entity id="e12">
<description>Reports</description>
<oncontextmenu></oncontextmenu>
<image>images/book.gif</image>
<imageOpen>images/bookOpen.gif</imageOpen>
<contents>
<entity id="e13">
<description>Income</description>
<oncontextmenu></oncontextmenu>
<image>images/paper.gif</image>
<imageOpen>images/paper.gif</imageOpen>
<contents>
</contents>
</entity>
<entity id="e14">
<description>Expenses</description>
<oncontextmenu></oncontextmenu>
<image>images/paper.gif</image>
<imageOpen>images/paper.gif</imageOpen>
<contents>
</contents>
</entity>
</contents>
</entity>
</tree>
The above XML file is named "tree.xml" and is available fordo
wnload at the end of this article.
上面的XML文件名为“tree.xml”,可以在本文的末尾下载
XSL Style Sheet
XSL样式表
Both Figures 1 and 2 were the result of transformations with our XMLdo
cument and separate XSL style sheets. Below is the standard XSL style sheet that is applied to our XMLdo
cument(s).
图1和图2是XML文档和分离的XSL样式表的转换结果。
以下是应用于XML文档的标准XSL样式表。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl" language="JavaScript">
<xsl:template match="tree">
<xsl:apply-templates select="entity"/>
</xsl:template>
<xsl:template match="entity">
<div onclick="window.event.cancelBubble = true;clickOnEntity(this);" onselectstart="return false" ondragstart="return false">
<xsl:attribute name="image"><xsl:value-of select="image"/></xsl:attribute>
<xsl:attribute name="imageOpen"><xsl:value-of select="imageOpen"/></xsl:attribute>
<xsl:attribute name="open">false</xsl:attribute>
<xsl:attribute name="id">f<xsl:value-of select="@id"/></xsl:attribute>
<xsl:attribute name="open">false</xsl:attribute>
<xsl:attribute name="STYLE">
padding-left: 20px;
cursor: hand;
<xsl:if expr="depth(this) > 2">
display: none;
</xsl:if>
</xsl:attribute>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="middle">
<img border="0" id="image">
<xsl:attribute name="SRC">
<xsl:value-of select="image"/>
</xsl:attribute>
</img>
</td>
<td valign="middle" nowrap="true">
<xsl:attribute name="STYLE">
padding-left: 7px;
font-family: Verdana;
font-size: 11px;
font-color: black;
</xsl:attribute>
<xsl:value-of select="description"/></td>
</tr>
</table>
<xsl:apply-templates select="contents/entity"/>
</div>
</xsl:template>
</xsl:stylesheet>
Figure 3 (below) displays the folder tree that is created using the above XSL style sheet.
图3显示了使用上面的XSL样式表建立的折叠树。
Figure 3. XSL transformation
Client Operations
客户端操作
In order for our folder tree to function, we require the following client-side operations:
为了使折叠树运作,需要以下客户端操作:
1. Initialize 初始化
2. Expand 展开
3. Collapse 引缩
4. Expand All (Maximize) 全部展开(最大化)
5. Collapse All (Minimize) 全部收缩(最小化)
Below is the code that performs these five operations. This code can be found within the "tree.js" file included with this article.
以下是进行这五种操作的代码。这些代码在本文所包含的文件“tree.js”中。
function initialize() {
var xmlDoc
var xslDoc
xmlDoc = new ActiveXObject('Microsoft.XMLDOM')
xmlDoc.async = false;
xslDoc = new ActiveXObject('Microsoft.XMLDOM')
xslDoc.async = false;
xmlDoc.load("tree/tree.xml")
xslDoc.load("tree/tree.xsl")
folderTree.innerHTML = xmlDoc.documentElement.transformNode(xslDoc)
}
function clickOnEntity(entity) {
if(entity.open == "false") {
expand(entity, true)
}
else
{
collapse(entity)
}
window.event.cancelBubble = true
}
function expand(entity) {
var oImage
oImage = entity.childNodes(0).all["image"]
oImage.src = entity.imageOpen
for(i=0;
i < entity.childNodes.length;
i++) {
if(entity.childNodes(i).tagName == "DIV") {
entity.childNodes(i).style.display = "block"
}
}
entity.open = "true"
}
function collapse(entity) {
var oImage
var i
oImage = entity.childNodes(0).all["image"]
oImage.src = entity.image // collapse and hide children
for(i=0;
i < entity.childNodes.length;
i++) {
if(entity.childNodes(i).tagName == "DIV") {
if(entity.id != "folderTree") entity.childNodes(i).style.display = "none"
collapse(entity.childNodes(i))
}
}
entity.open = "false"
}
function expandAll(entity) {
var oImage
var i
expand(entity, false) // expand children
for(i=0;
i < entity.childNodes.length;
i++) {
if(entity.childNodes(i).tagName == "DIV") {
expandAll(entity.childNodes(i))
}
}
}
Future of Web-Based Folder Trees
基于Web的折叠树展望
As Web technologies grow, they allow us to maintain state within our Web applications. This increases the complexity of our interfaces as more operations are moved from server to client. This is a blessing that will increase the usability of our interfaces and the performance of our applications by taking the load off of our servers.
由于Web技术的发展,我们可以在Web应用中维护状态。随着
更多的操作从服务端移向客户端,界面的复杂性也大大提高。这
是福音,通过服务器减负,我们可以提高界面的实用性和应用的
性能。
In future articles I may expand on the tree discussed in this article by explaining how to create an API to dynamically insert, remove, rename, and refresh objects within your trees.
在后续的文章中将对本文讨论的树作些展开,说明如何建立API来
动态插入、删除、重命名和刷新树中的对象。
Closing
结束语
I hope the contents of this article will help increase the quality of your Web applications interface. If you have any questions, comments, or suggestions, please feel free to email me at the address listed in the author section.
我希望本文的内容对提高你的Web应用界面的质量有所帮助。如果你
有任何问题、说明或建议,请随时按作者部分所列的地址发EMail给我。

On a side note, I would like to thank Lee McGraw for helping me proofread and validate thisdo
cument.
作为旁注,我向Lee McGraw表示感谢,感谢他帮助我校对并验证这一文档。
The second article in this series addresses custom context menu creation.
这一系列的第二遍的主题是建立自定义上下文菜单。
Download 下载
Download the example.zip file that contains the files that make up the tree, including tree.xsl, tree.xml, tree.js, tree.css, common.js, and images.
下载文件example.zip,其中包含了构造树所需的文件,包括
tree.xsl, tree.xml, tree.js, tree.css, common.js和图象。
 
X

xman

Unregistered / Unconfirmed
GUEST, unregistred user!
向jsxjd同志学习
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
唉做(扮?)MM真好,这么长也有人翻,不过要记得给分
 
顶部