午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > XML卷之實戰錦囊(5):結構樹圖

XML卷之實戰錦囊(5):結構樹圖

熱門標簽:本地電話機器人 東營電銷 高德地圖地圖標注服務中心 微信地圖標注合并了 南寧網絡外呼系統運營商 400電話辦理包年 如何修改多個百度地圖標注 r語言數據可視化地圖標注 隨州外呼調研系統

動機:
最初想起做二叉樹是因為需要做一個公司結構圖。 以前的做法都是直接用圖象軟件畫出來一個圖片。很好看,但每次有變動后都需要重新畫一個新的。 另一方面,網頁上對線條的顯示、布局相當局限。根據動態生成的數據進行排版、定位都相當困難, 而且在美觀上也差強人意。 做了各種嘗試以后,決定用XML+XSL作數據運算; 用VML來美化線條,用JAVASCRIPT來給對象定位。

材料:
XML卷之結構樹圖
有2個文件:flow2.xml 和 flow2.xsl 
效果:
瀏覽這里 
講解:
二叉樹思路(1)

html xmlns:v="urn:schemas-microsoft-com:vml">
STYLE>
v\:* { BEHAVIOR: url(#default#VML) }
/STYLE>
v:group id="group1" name="group1" coordsize = "100,100">

/v:group>
以上這些都是VML的基本格式,我就不詳細講解了。

 

XML是樹型結構,我們讀取每個數據就需要對這個
XML數據樹進行遍歷。而遞歸運算是XSL優勢之一。
我也是在用其它多種方法進行遍歷運算失敗后才
決定使用XSL的。

 

FlowRoot>
vcTitle>二叉樹--結構圖/vcTitle>
Author>Sailflying/Author>
Email>sailflying@163.net/Email>
FlowNode>
iProcess>1/iProcess>
vcCourse>第一個節點/vcCourse>
iNextYes>
FlowNode>
iProcess>2/iProcess>
vcCourse>第二個節點/vcCourse>
iNextYes>…/iNextYes>
iNextNo>…/iNextNo>
/FlowNode>
/iNextYes>
iNextNo>
FlowNode>
iProcess>3/iProcess>
vcCourse>第三個節點/vcCourse>
iNextYes>…/iNextYes>
iNextNo>…/iNextNo>
/FlowNode>
/iNextNo>
/FlowNode>
/FlowRoot>


邏輯上很簡單,當前節點(1)下面有兩個子節點(2,3)。
只需要將節點2和節點3定位在節點1的左下方和右下方就可以了。
這里我將左右節點的連接線分別用了綠色和紅色,方便顯示。


前面我們說到了XSL的遞歸功能,為了更清楚的看到每一個詳細的
顯示步驟,只需要仿照下面的代碼,加一個alert語句就可以了。

 

xsl:template match="FlowNode">

SCRIPT language="JavaScript1.2">

alert('逐步顯示');

/SCRIPT>

/xsl:template>


看了上面的慢動作,是否能讓大家了解到我的思路。

 


二叉樹思路(2)
我的思路很簡單:
(1)讀取當前節點的資料,用VML生成一個新的對象。
給對象賦初始數值(如 name,id,style樣式等)
(2)用腳本控制來給當前對象定位
(3)當前節點和它的父親節點之間加箭頭,線條。
(4)繼續找當前節點的子節點,一直循環定位到結束。
也就是所有節點都遍歷完畢,已經生成好了樹。

 


xsl:template match="FlowNode">

xsl:apply-templates />

/xsl:template>
xsl:template match="iNextYes">
xsl:apply-templates select="./FlowNode" />
/xsl:template>

xsl:template match="iNextNo">
xsl:apply-templates select="./FlowNode" />
/xsl:template>

 

整個遞歸過程就是靠上面這三個模塊(template)來完成的。
第一個template在匹配當前節點中每一個子節點的模板的時候
調用了后面兩個template; 而后面兩個template又在具體執行
的時候調用了第一個template ,這就相當于一個遞歸函數。

語法:

 

要依次匹配當前節點中的每個子節點的模板,應使用該元
素的基本形式 xsl:apply-templates />。
否則,匹配的節點由 select 參數中 XPath 表達式的值決
定,如 xsl:apply-templates select="./FlowNode" />

 

(1)和(2)的作用都是返回由 select 參數給出的表達式的字符串值。
他們的搜索條件相同,所以返回的值也一樣。
只不過是使用的場合不同,他們的書寫形式也就不一樣。


(1) xsl:value-of select="./iProcess/text()" />
(2) {./iProcess/text()}


這里定義了一些變量,節點的定位就是根據這些變量來調用運算公式的。

 

root_left //根的左邊距=所有葉子的分配寬度(y*10) + 所有葉子的寬度(y*50) + 左邊距基本值(10)
root_top //根的上邊距=上邊距基本值(10)
objOval //當前對象,是一個object
objOval_iProcess //當前對象的步驟值
objParentOval //當前對象的父節點,是一個object
objParentOval_iProcess //當前對象父節點的步驟值
objParent_name //當前對象父節點的名稱
Leaf_left //當前對象的所有子節點中的左邊葉子數
Leaf_right //當前對象的所有子節點中的右邊葉子數
Leaf_sum //當前對象的所有子節點中葉子數

葉子:是指當前節點沒有子節點

 


節點的定位公式:

(1) 當前節點是根節點

 

//根的位置
SobjOval.style.left=parseInt(root_left);
SobjOval.style.top=parseInt(root_top);
//parseInt() 函數的作用是取整數值,如果不是則為NAN
//isNaN()函數的作用是判斷parseInt取得的是否為整數


(2)當前節點是父節點的左邊子節點

 

1)判斷的條件是: 當前對象父節點的名稱='iNextYes'

2)如果存在右邊子葉子,則公式為:
當前節點的left=父節點的left - 當前節點的右邊子葉子的總寬度- 當前節點的寬度

3)如果不存在右邊子葉子,但存在左邊子葉子,則公式為:
當前節點的left=父節點的left - 當前節點的左邊子葉子的總寬度

4)如果當前節點本身就是葉子,則公式為:
當前節點的left=父節點的left - 當前節點的寬度

 

(3)當前節點是父節點的右邊子節點

 

1)判斷的條件是: 當前對象父節點的名稱='iNextNo'

2)如果存在左邊子葉子,則公式為:
當前節點的left=父節點的left + 當前節點的左邊子葉子的總寬度 + 當前節點的寬度

3)如果不存在左邊子葉子,但存在右邊子葉子,則公式為:
當前節點的left=父節點的left + 當前節點的右邊子葉子的總寬度

4)如果當前節點本身就是葉子,則公式為:
當前節點的left=父節點的left + 當前節點的寬度

 


(2)和(3)的公式都是得到當前節點的left,我們還需要得到當前節點的top
很簡單的公式:當前節點的top=父節點的top + 偏移量(80)

 


二叉樹思路(3)
連接線條的定位思路:
(1)找到當前節點和父節點的位置
(2)判斷當前節點是父節點的左邊子節點,還是右邊子節點
(3)畫線條


這里定義了一些變量。

 

objOval //當前節點,是一個object
objParentOval //當前對象的父節點,是一個object
objLine //當前線條,是一個object


線條的定位公式:

 


from="x1,y1" to="x2,y2" 是 VML 里定位線條的方式

當前節點是父節點的左邊子節點,則公式為:
from = 父節點的left + 偏移量(15) , 父節點的top + 偏移量(32)
to = 父節點的left + 偏移量(30) , 父節點的top - 偏移量(2)

當前節點是父節點的右邊子節點,則公式為:
from = 父節點的left + 偏移量(35) ,父節點的top + 偏移量(32)
to = 父節點的left + 偏移量(20) ,父節點的top - 偏移量(2)

 


我所能想到的也就這么多了。

如果只是單純的做一個公司結構圖的話,會更簡單很多。
下面是賽揚的思路,我也是在他的基礎上深入一點而已。

 

首先計算最下層節點個數,得出寬度,
然后應該根據節點的從屬關系計算其上層節點位置,遞歸。
每一層級的節點要按從屬關系先排序
首先設“基本值”=節點應向右偏移量
每個包含子節點的節點的left值等于它所擁有的節點所占寬度的一半加上基本值

 

后話:

最近不知為何,網絡一直都不好。斷線的時間比在線的時間多。
所以沒對代碼簡化,其實,要完善的功能還有很多,比如:
需要加右鍵菜單
右鍵菜單內含新建節點、修改節點名稱、改變關聯關系等
在每一個節點上都可右鍵打開這個節點的右鍵菜單
 

 

 

講解:
1)flow2.xml 是數據文件,相信大家都不會有問題。
2)flow2.xsl 是格式文件,有幾個地方要注意。 
(1)腳本中:

(1) xsl:value-of select="./iProcess/text()" /> ;
(2) {./iProcess/text()}

(1)和(2)的作用都是返回由 select 參數給出的表達式的字符串值。
他們的搜索條件相同,所以返回的值也一樣。
只不過是使用的場合不同,他們的書寫形式也就不一樣。
xsl:apply-templates select="team" order-by="blue_ID"/>
比如我們想生成以下代碼
div 名稱=“參數值”>內容/div>


我們假設名稱為“name”,參數值為XML數據中當前節點下面的子節點book的值


第一種寫法是先加屬性名稱,再加參數值
div>
xsl:attribute name="name">
xsl:value-of select="./book/text()"/> /xsl:attribute>
內容
/div>

第二種寫法是直接加屬性名稱和參數值
div name="{./book/text()}">內容/div>

具體的使用你可以看我寫的代碼中的例子。

XSL在正式的 xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 的標準里

xsl:value-of select="./book/text()"/>
作用是:只是把他的文本值寫出來,而
xsl:value-of select="./book"/>
是把他的文本值和他的所有子節點的內容顯示出來。
大家可以試驗一下,輸出一個有子節點的,一個無子節點的
看看顯示的結果是否相同。


(2)需要注意:

IE5 不支持 tag att="{xpath}">
要用
tag>xsl:attribute name="att">xsl:value-of select="xpath">/xsl:attribute>

命名空間要用
xmlns:xsl="http://www.w3.org/TR/WD-xsl"

?xml version="1.0" encoding="gb2312" ?>
另外說一點:
在大多的XML教科書中所顯示的代碼中很少會加上encoding="gb2312" ,
因此我們在XML中用到中文的時候會報錯,原因就是沒有寫這個申明。

 


后記:
這里說的是一種思路。如果觸類旁通,自然能夠派上用場。 

您可能感興趣的文章:
  • Python構建XML樹結構的方法示例
  • 關于html嵌入xml數據島如何穿過樹形結構關系的問題
  • 一個很簡單的jquery+xml+ajax的無刷新樹結構(無css,后臺是c#)
  • Dom遍歷XML的一個例子,結果為樹狀結構
  • 簡單了解XML 樹結構

標簽:寧夏 拉薩 西雙版納 黃石 宿遷 果洛 益陽 德州

巨人網絡通訊聲明:本文標題《XML卷之實戰錦囊(5):結構樹圖》,本文關鍵詞  XML,卷之,實戰,錦囊,結構,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《XML卷之實戰錦囊(5):結構樹圖》相關的同類信息!
  • 本頁收集關于XML卷之實戰錦囊(5):結構樹圖的相關信息資訊供網民參考!
  • 推薦文章
    久久久女人电视剧免费播放下载 | 偷拍与自拍一区| 一级aaaa毛片| 国产黑丝一区二区| 久久亚洲综合网| 日日噜噜噜夜夜爽亚洲精品| 日韩欧美亚洲成人| 狠狠色狠狠色综合系列| 亚洲第一网站在线观看| 东京热无码av男人的天堂| 一区二区三区韩国| 免费国产成人看片在线| 日产日韩在线亚洲欧美| 欧美三级视频在线观看| 95精品视频在线| 奇米影视一区二区三区小说| 一级特黄免费视频| 激情五月婷婷在线| 男人的天堂av网| 国产精品宾馆在线精品酒店| 这里只有精品66| 欧美午夜视频在线| 国产免费成人av| 色综合亚洲精品激情狠狠| 亚洲成人久久久| 精品国产91久久久| 一区二区三区在线免费观看| 国产欧美精品国产国产专区| 丁香天五香天堂综合| 国产欧美一区二区三区视频在线观看| 懂色av懂色av粉嫩av| 国产性猛交xx乱| 最新免费av网址| 三年中文高清在线观看第6集| 久久这里精品国产99丫e6| 琪琪第一精品导航| 一区二区三区四区视频| 亚洲精品网址在线观看| 精品视频偷偷看在线观看| 在线一区二区三区四区| 亚洲在线观看免费| 亚洲精品乱码久久久久久黑人 | 欧美插天视频在线播放| 日韩欧美你懂的| 在线视频中文字幕一区二区| 欧美日韩精品二区第二页| 欧美精品一二三四| 狠狠躁18三区二区一区| 色哦色哦哦色天天综合| 欧美日韩成人综合天天影院| 欧美一级xxx| 欧美性色综合网| 制服.丝袜.亚洲.中文.综合| 日韩视频免费观看高清在线视频| 欧美xxxxxxxx| 日韩欧美专区在线| 亚洲人成啪啪网站| 日韩hd视频在线观看| 亚洲性线免费观看视频成熟| 精品久久久网站| 中文字幕日韩精品有码视频| zzijzzij亚洲日本成熟少妇| 亚洲天堂免费在线| 久久久久久久久电影| 久久精品视频免费播放| 日日狠狠久久偷偷四色综合免费| 97香蕉久久超级碰碰高清版| 97视频在线看| 国产精品二区二区三区| 7777在线视频| 在线免费看污网站| 51调教丨国产调教视频| 国产麻豆a毛片| 欧美brazzers| 久久免费黄色| 性感美女一级片| 国产精品一区二区免费不卡| 日韩理论片一区二区| 亚洲免费av高清| 欧美日韩一区不卡| 少妇高潮久久77777| 欧美一区在线直播| 神马影院一区二区| 国产高清999| 久久久久久久国产视频| 亚洲免费国产视频| 久久久久久久久久看片| 国产精品三级电影| 91精品久久久久久久99蜜桃 | 成人综合在线观看| 欧美特级www| 日韩在线视频网| 人人爽久久涩噜噜噜网站| 色综合影院在线观看| 欧美老女人bb| 亚洲国产综合久久| 欧美少妇bbw| 久久精品网站免费观看| 日韩一区二区三区视频| 青青草成人在线| 欧美人xxxxx| 国产日韩视频一区| www.99re7| 国产乱淫av免费| 国产精品女同互慰在线看| 日韩欧美成人午夜| 欧美成人猛片aaaaaaa| 欧美成人精品激情在线观看 | 成人毛片视频在线观看| 91麻豆精品国产91久久久更新时间| 国产一区二区三区在线观看视频 | 欧美亚洲尤物久久| 亚洲欧美日韩天堂| 日本sm极度另类视频| 91成人在线观看喷潮教学| 波多野结衣不卡视频| 国产制服丝袜一区| 日韩亚洲国产中文字幕欧美| 久久久久久久一| 成人小视频在线观看免费| 婷婷久久综合网| 国产一区二区福利| 亚洲高清久久网| 国产有码一区二区| 免费高清视频在线观看| 高h调教冰块play男男双性文| 亚洲欧美另类久久久精品2019| 久久精品国产99国产精品澳门| 亚洲视频精品一区| 欧美成人三级视频| 久久女同互慰一区二区三区| 精品国产露脸精彩对白| 国产乱码精品一区二区三区中文 | 欧美一区二区二区| 成人免费网站在线| 亚洲成人av免费看| 精品国产亚洲av麻豆| 色哟哟一区二区| 欧美一区二区三区精品| 国产原创欧美精品| 小早川怜子久久精品中文字幕| av官网在线观看| 欧美午夜电影网| 免费影院在线观看一区| aaa黄色大片| 日韩国产欧美三级| 日本道精品一区二区三区 | 亚洲一区二区视频在线观看| 国产欧美一区二区三区视频| 无码人妻aⅴ一区二区三区| 久久99在线观看| 亚洲香蕉成视频在线观看| 草草视频在线免费观看| 亚洲黄色三级视频| 97精品超碰一区二区三区| 亚洲欧洲激情在线| 亚洲视频欧美在线| 中文字幕你懂的| 亚洲高清免费观看| 97神马电影| 一级二级黄色片| 国产高清在线观看免费不卡| 日韩av网站电影| 日av中文字幕| 国产精品久久久午夜夜伦鲁鲁| 91精品国产色综合久久不卡蜜臀 | 欧美性猛交99久久久久99按摩| 久久精品国产一区二区三区日韩 | 91人人澡人人爽人人精品| www.好吊色| 欧美狂野另类xxxxoooo| 99国内精品久久久久久久软件| 一区二区伦理片| 99麻豆久久久国产精品免费 | 成人深夜视频在线观看| 日韩有码在线播放| 9.1在线观看免费| 国产精品国产三级国产三级人妇| 国产做受高潮69| 国产精品久久久久久9999| 北条麻妃一区二区三区| 国产美女扒开尿口久久久| 久久免费在线观看视频| 五月天欧美精品| 亚洲精品免费在线看| 国产熟女一区二区三区五月婷 | 国产精品综合一区二区| 日韩中文字在线| 亚洲午夜精品在线观看| 国产精品灌醉下药二区| 好看的日韩精品视频在线| 久久久久成人片免费观看蜜芽| 欧美日韩午夜在线| www黄色在线| k8久久久一区二区三区| 99久久久精品免费观看国产| 91极品身材尤物theporn| 日韩一区二区三区观看| 一本之道在线视频| 国产欧美视频一区二区三区| 成人春色激情网| 成人免费看片98| 一本色道久久综合亚洲aⅴ蜜桃| 超薄肉色丝袜足j调教99| 国产精品888| 国产精品视频免费观看| 日本加勒比一区| 午夜精品在线视频| 久久精品视频8| **欧美日韩vr在线| 人人草在线观看| 9191久久久久久久久久久| 中国丰满熟妇xxxx性| 欧美a级一区二区| 国产精品一区视频| 国产伦精品一区二区三区视频青涩 | 日韩成人久久久| 免费的av网站| 欧美日韩一级大片网址| 九九精品久久久| 国产成都精品91一区二区三| 成人做爽爽免费视频| 欧美一区二不卡视频| 欧美重口另类videos人妖| 国产精选久久久| 欧美激情网友自拍| 欧美一级做a爰片免费视频| 久久6精品影院| 在线免费a视频| 热re91久久精品国99热蜜臀| 成人小说亚洲一区二区三区| 国产69精品久久久| 中文字幕在线观看视频免费| 国模精品系列视频| 亚洲免费黄色片| 国产精品久久久久久久久久东京| 久久国产黄色片| 久久久999国产精品| 在线免费a视频| 高清视频欧美一级| 成人黄色三级视频| 国产精品日韩在线一区| 六月婷婷综合网| 91嫩草免费看| 国产91富婆露脸刺激对白| 国产伦精品一区二区三区免费视频| 国产成人aaa| 18岁网站在线观看| 欧美亚洲国产一区二区三区| 精品人妻在线视频| 国产亚洲精品久久| 在线观看黄网站| 国产精品免费在线免费 | 极品白嫩丰满美女无套| 亚洲欧美日韩中文在线制服| 九九热这里有精品视频| 97久久精品国产| 久久99精品久久久| 特级黄色录像片| 亚洲人成精品久久久久久 | 欧美最近摘花xxxx摘花| 日韩精品欧美成人高清一区二区| 大波视频国产精品久久| 91色乱码一区二区三区| 想看黄色一级片| 精品久久久久久久久久久久久久久久久| 国产无遮挡又黄又爽| 91成人免费观看网站| 狠狠色伊人亚洲综合成人| 91淫黄看大片| 欧美一级片免费看| 日韩电影在线观看一区二区| 欧美在线视频a| 国产成人av自拍| 国产精品第157页| 欧美影视一区在线| 欧美黑人一级片| 国产精品久久久久久久一区探花| 成人18视频日本| 一区二区免费在线观看视频| 九九热精品视频| www.日韩av| 亚洲天堂久久新| 国产精品久久久久久久久久东京| 成人永久免费视频| 欧美xxxxx精品| 欧美日韩aaaa| 久久色中文字幕| 超碰caoprom| 国产噜噜噜噜噜久久久久久久久 | 黑鬼狂亚洲人videos| 亚洲最大福利视频网站| 午夜精品国产更新| 欧美偷拍第一页| 亚洲最大福利视频| 欧美日韩中国免费专区在线看| av毛片在线免费观看| 亚洲欧美国产精品桃花| 亚洲国产女人aaa毛片在线| 人妻少妇精品无码专区久久| 日韩在线观看a| 亚洲精品ady| 精品无人区卡一卡二卡三乱码免费卡| 僵尸世界大战2 在线播放| 一区二区三区天堂av| 久久综合久久综合久久| 中文字幕av播放| 中文字幕在线亚洲三区| 精品美女在线观看| 狠狠色丁香九九婷婷综合五月| 国产xxxxxxxxx| 成人免费91在线看| 日韩午夜电影在线观看| 狠狠狠色丁香婷婷综合激情| 色噜噜噜噜噜噜| 久久本道综合色狠狠五月| 91国偷自产一区二区三区观看| 国产成人精品av久久| 亚洲午夜精品福利| 在线观看日韩专区| 国产精品欧美一级免费| 日本视频www| 2019日韩中文字幕mv| 欧美精品激情在线观看| 亚洲丰满少妇videoshd| 好吊色视频一区二区| 黄大色黄女片18第一次| 国产精品一区二区三区在线播放 | 欧美三区免费完整视频在线观看| 精品久久无码中文字幕| 日本一级片在线播放| 日韩国产高清一区| 亚洲人成电影网站色www| 中文字幕字幕中文在线中不卡视频| 国产高清不卡视频| www.av天天| 超碰97免费观看| 国外成人在线直播| 91久久精品网| 蜜臀av性久久久久蜜臀aⅴ流畅| 99久久久无码国产精品性| 亚洲国产欧美不卡在线观看| 久久久久久中文| 欧美日韩视频在线| 国产精品一色哟哟哟| 国产日韩欧美在线观看视频| 免费黄色特级片| 国产精品丝袜高跟| 678五月天丁香亚洲综合网| 国产在线播放一区三区四| 99热只有这里有精品| 女性隐私黄www网站视频| 国产伦精品一区二区三区视频孕妇 | 69xxx免费视频| 无码人妻aⅴ一区二区三区日本| 精品中文字幕在线观看| 91.麻豆视频| 久久精品无码一区二区三区| 中文字幕免费播放| 中国1级黄色片| 污视频免费在线观看网站| 国产经典一区二区三区| 亚洲精品永久免费精品| 欧美午夜无遮挡| 国产精品久久久久久户外露出| 麻豆精品一二三| 麻豆精品久久久久久久99蜜桃| 亚洲第一页av| 欧美女同在线观看| 国产精品视频二| 超碰97国产在线| 欧美又大又硬又粗bbbbb| 亚洲女人初尝黑人巨大| 欧美色窝79yyyycom| 国产精品日日摸夜夜摸av| 亚洲国产日韩在线观看| 少妇高潮av久久久久久| 免费网站在线高清观看| 国产一区二区在线观看免费视频| 青青青青在线视频| 蜜桃狠狠色伊人亚洲综合网站| 国产精品视频区1| 午夜精品久久久久久久99热浪潮| 欧美久久高跟鞋激| 亚洲欧洲一区二区在线播放| 久久爱www久久做| 亚洲欧美日韩动漫| 99国产精品99| 国产原创中文av| 成人小视频在线播放| 成熟人妻av无码专区| 黄色正能量网站| 亚洲自拍第三页| 国产在线视频在线| 欧美一级黄色录像片| 免费国产在线精品一区二区三区| 26uuu久久噜噜噜噜| 永久免费精品影视网站| 日韩va亚洲va欧洲va国产| 欧美综合亚洲图片综合区| 欧美午夜片欧美片在线观看| 亚洲狠狠丁香婷婷综合久久久| 国产视频一区在线播放| 国产亚洲午夜高清国产拍精品| 国产一区二区三区在线观看免费 | 久久精品综合网| 国产专区欧美精品| 狠狠色综合日日| 成人精品视频一区二区三区 | 亚洲va在线观看|