亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

將 TOC 從 XML 帶到 DHTML地帶

2019-11-18 12:48:07
字體:
來源:轉載
供稿:網友

  對 Web 開發人員而言,通過使用帶有“有意義的”標記數據元素的 xml,可實現使信息更有攜帶性與彈性。由于在 Internet EXPlorer 5 中增強的 XSL 支持,使得在瀏覽器中顯示 XML 數據更加輕易。
  
  我們在 Web Workshop 中使用 XML 存儲 TOC 信息已經有一段時間了,通過 XSL 樣式表可以將該信息轉換為 Html。樣式表還“寫下”鏈接到一個 CSS 和 JScript 文件,因此我們一次就可將 XML 轉換到 DHTML。通過修改單一的 XSL 樣式表,XML 存儲的數據即可輕松改變所有 TOC 的輸出格式。
  
  讓我們來依次看一下這四種文件 — XML、XSL、JScript 及 CSS。
  
  在 XML 存儲 TOC
  對于本示例,我們已經創建了一個與 web 開發有關的文章或“主題”的列表。每個 TOPIC 元素都有一個說明性的 TITLE 和 URL。主題按 TOPICS 元素內的 TYPE 進行分組。注重第三個 TOPICS 元素自身包含 TOPICS 元素。webdev.xml 文件頂端的<?xml:stylesheet type="text/xsl" href="list.xsl"?>處理指令會告訴 Internet Explorer 5 當該 XML 文件直接在瀏覽器中打開時,按照此樣式表實施 XML。(我們將在欄目尾端討論如何在服務器上以 asp 實現此項操作。)
  
  以下是 XML 數據:
  列表 1:webdev.xml
  <?xml version="1.0"?>
  <?xml:stylesheet type="text/xsl" href="list.xsl"?>
  
  <TOPICLIST TYPE="Web Dev References">
  
  <TOPICS TYPE="DHTML">
  <TOPIC>
  <TITLE>Objects</TITLE>
  <URL>/workshop/author/dhtml/reference/objects.asp</URL>
  </TOPIC>
  <TOPIC>
  <TITLE>Properties</TITLE>
  <URL>/workshop/author/dhtml/reference/properties.asp</URL>
  </TOPIC>
  <TOPIC>
  <TITLE>Methods</TITLE>
  <URL>/workshop/author/dhtml/reference/methods.asp</URL>
  </TOPIC>
  <TOPIC>
  <TITLE>Events</TITLE>
  <URL>/workshop/author/dhtml/reference/events.asp</URL>
  </TOPIC>
  <TOPIC>
  <TITLE>Collections</TITLE>
  <URL>/workshop/author/dhtml/reference/collections.asp</URL>
  </TOPIC>
  </TOPICS>
  
  <TOPICS TYPE="CSS">
  <TOPIC>
  <TITLE>Attributes</TITLE>
  <URL>/workshop/author/css/reference/attributes.asp</URL>
  </TOPIC>
  <TOPIC>
  <TITLE>Length units</TITLE>
  <URL>/workshop/author/css/reference/lengthunits.asp</URL>
  </TOPIC>
  <TOPIC>
  <TITLE>Color table</TITLE>
  <URL>/workshop/author/dhtml/reference/colors/colors.asp</URL>
  </TOPIC>
  </TOPICS>
  
  <TOPICS TYPE="XML">
  
  <TOPICS TYPE="XML DOM">
  <TOPIC>
  <TITLE>Developer's guide</TITLE>
  <URL>/xml/XMLGuide/default.asp</URL>
  </TOPIC>
  <TOPIC>
  <TITLE>Objects</TITLE>
  <URL>/xml/reference/scriptref/XMLDOM_Objects.asp</URL>
  </TOPIC>
  </TOPICS>
  
  <TOPICS TYPE="XSL">
  <TOPIC>
  <TITLE>Developer's guide</TITLE>
  <URL>/xml/XSLGuide/default.asp</URL>
  </TOPIC>
  <TOPIC>
  <TITLE>Elements</TITLE>
  <URL>/xml/reference/xsl/XSLElements.asp</URL>
  </TOPIC>
  <TOPIC>
  <TITLE>Methods</TITLE>
  <URL>/xml/reference/xsl/xslmethods.asp</URL>
  </TOPIC>
  <TOPIC>
  <TITLE>Pattern syntax</TITLE>
  <URL>/xml/reference/xsl/XSLPatternSyntax.asp</URL>
  </TOPIC>
  </TOPICS>
  
  </TOPICS>
  
  </TOPICLIST>
  
  使用一個 XSL 樣式表將 XML 轉換為 HTML
  雖然我們可以在代碼中直接對 XML 進行操作,但 XSL 讓我們使用陳述的方法,將 XML 轉換到顯示輸出(在此例中為 HTML),這種方法幾乎不需要代碼(和勞神)。XSL 使您不必編寫很多涉及分支的代碼 —假如您在 XML 文件中嵌套了復雜的層次,則此效果會非凡明顯。在此例中,我們可以使用任意數目的 TOPICS 層次;XSL 均可很好地對此進行處理。
  
  讓我們來看一下 XSL 代碼。
  
  列表 2:list.xsl
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl";>
  
  <xsl:template match="/">
  <HTML>
  <HEAD>
  <TITLE>List <xsl:value-of select="TOPICLIST/@TYPE" /></TITLE>
  <LINK REL="stylesheet" TYPE="text/css" HREF="list.css" />
  <SCRIPT TYPE="text/javascript" LANGUAGE="Javascript" SRC="list.js"></SCRIPT>
  </HEAD>
  <BODY>
  <BUTTON onCLICK="ShowAll('UL')">Show All</BUTTON>
  <BUTTON onCLICK="HideAll('UL')">Hide All</BUTTON>
  <H1>List <xsl:value-of select="TOPICLIST/@TYPE" /></H1>
  <UL><xsl:apply-templates select="TOPICLIST/TOPICS" /></UL>
  <P><BUTTON onCLICK="window.alert(document.body.innerHTML);">View HTML</BUTTON></P>
  </BODY>
  </HTML>
  </xsl:template>
  
  <xsl:template match="TOPICS">
  <LI CLASS="clsHasKids"><xsl:value-of select="@TYPE" />
  <UL>
  <xsl:for-each select="TOPIC">
  <LI>
  <A TARGET="_new">
  <xsl:attribute name="HREF">
  http://msdn.microsoft.com<;xsl:value-of select="URL" />
  </xsl:attribute>
  <xsl:value-of select="TITLE" />
  </A>
  </LI>
  </xsl:for-each>
  <xsl:if test="TOPICS"><xsl:apply-templates /></xsl:if>
  </UL>
  </LI>
  </xsl:template>
  
  </xsl:stylesheet>
  
  如您所見,我們使用了眾多 HTML 標記符和少量的 "xsl:" 元素。我們明確告訴處理器這是一個 XSL 文件并作為 XSL 文件的開始,然后聲明兩個 xsl:template 元素塊,<xsl:template match="/"> 與 <xsl:template match="TOPICS">。
  
  轉換根目錄
  第一個塊 <xsl:template match="/"> 通知處理器從由斜杠指示的 XML 文件的根目錄開始轉換。在本塊中,我們要做兩件事:“寫下”我們的 HTML 輸入的結構和類屬元素,并有條件地掛接到任何其他模板塊中。我們采用 TOPICLIST 元素 TYPE 屬性的值 — Web 開發參考 — 并將其放入 <TITLE> 和 <H1> HTML 元素中;我們還掛接腳本 (list.js) 和樣式表 (list.css) 文件,它們將提供對 DHTML 外觀和行為的處理。我們使用腳本文件中的兩個函數,在頂端繪制了一些供用戶顯示或隱藏所有 TOC 節點的按鈕,在底端添加了另一個按鈕,來查看警報框中的 HTML 源文件。
  
  第一個塊中最有趣的元素是 <xsl:apply-templates select="TOPICLIST/TOPICS" />。它通知處理器轉換 XML 文檔的所有 TOPICS 節點,這些節點是根目錄 TOPICLIST 節點的子節點。假如您查看一下上面的 XML 文件,您會注重到它是由 TYPE "DHTML"、"CSS" 和 "XML" 的 TOPICS 節點組成的。在這里,XSL 處理器將從此第一個塊開始分支,并在樣式表中搜索另一個 xsl:template 塊,它與我們的 select="TOPICLIST/TOPICS" 屬性相匹配。正如您可能猜到的,這就是我們的第二個塊。
  
  轉換 TOPICLIST
  第二個模板塊 <xsl:template match="TOPICS"> 才是樂趣的開始。我們的三個節點的 TOPICS 中的每一個的上下文從第一個塊傳遞到本塊,并在此得以處理。首先,我們打開一個 HTML 列表項元素 (LI),并賦予其 "clsHasKids" 的 CLASS 屬性,我們后面將在 DHTML 中用到它;然后,我們輸出正在處理的 TOPICS 節點的 TYPE,這是通過 <xsl:value-of select="@TYPE" /> 處理的。為獲取 XSL 中的節點值,使用了 xsl:value-of 元素。假如獲取了某一屬性的值,則屬性名的開始處將會加上一個 "@"。
  
  接下來,我們打開一個 HTML 無序列表 (<UL>),它將包括當前 TOPICS 元素的所有子元素。使用 xsl:for-each 循環結構,它也可以將每個 TOPIC 子元素上下文更改為該元素(此時為 TOPIC),我們可以創建一個 <LI> 元素,并將其 TITLE 包在一個 A 鏈接中輸出,該鏈接的 HREF 屬性被設為 URL 元素的值。假如要以 XSL 將某一屬性動態添加到一個 HTML 輸出元素中,我們可以使用 xsl:attribute,其 name 屬性設為我們希望創建的 HTML 屬性;正如:<xsl:attribute name="HREF">。我們用服務器名稱(http://msdn.microsoft.com)以及 TOPIC URL, <xsl:value-of select="URL" /> 植入 HREF 值。
  
  好了,我們已經寫出了頂端組中的所有鏈接,但我們還沒有涉及 TOPICS 的子 TOPICS — 主題的嵌套列表。這是一個 XSL 真正表現出色的區域,它可以使用一條語句處理所有的遞歸!關閉進入第二個塊先開始處理 TOPICS 元素時打開的容器 <UL>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久影视电视剧凤归四时歌| 亚洲变态欧美另类捆绑| 欧美午夜精品在线| 91在线国产电影| 亚洲亚裔videos黑人hd| 日韩人在线观看| 91久久精品日日躁夜夜躁国产| 久久国产精品首页| 国产精品91在线观看| 亚洲精品视频播放| 欧美激情视频网| 亚洲人a成www在线影院| 91亚洲精华国产精华| 中国china体内裑精亚洲片| 国产精品嫩草影院一区二区| 亚洲成av人乱码色午夜| 欧美中文字幕在线观看| 日韩精品中文字幕视频在线| 亚洲人成电影在线观看天堂色| 日本久久精品视频| 欧美性xxxxxxx| 色婷婷亚洲mv天堂mv在影片| 这里只有精品久久| 中文字幕v亚洲ⅴv天堂| 黄色成人av在线| 日韩中文字幕亚洲| 岛国视频午夜一区免费在线观看| 中文字幕在线亚洲| 欧美激情奇米色| 欧美成人自拍视频| 国产ts人妖一区二区三区| 欧美男插女视频| 亚洲一区二区久久久久久| 国产精品成人v| 日韩免费在线视频| 亚洲综合大片69999| 亚洲精品97久久| 深夜成人在线观看| 欧美极品少妇xxxxⅹ喷水| 久久久久久九九九| 国产精品久久在线观看| 伊是香蕉大人久久| 亚洲专区国产精品| 68精品国产免费久久久久久婷婷| 久久久久久国产精品美女| 亚洲热线99精品视频| 久久久99免费视频| 亚洲国内精品在线| 亚洲第一免费播放区| 久久亚洲精品中文字幕冲田杏梨| 91中文字幕一区| 久久久国产精品免费| 亚洲第一页自拍| 亚洲欧洲高清在线| 在线a欧美视频| 91国偷自产一区二区三区的观看方式| 亚洲午夜国产成人av电影男同| 成人在线视频网站| 亚洲美女av在线| 国产亚洲精品美女| www欧美日韩| 欧美一区二区三区四区在线| 国产色婷婷国产综合在线理论片a| 欧美色道久久88综合亚洲精品| 亚洲一区二区三区成人在线视频精品| 九色精品美女在线| 日韩一区二区三区xxxx| 57pao精品| 91在线高清免费观看| 亚洲午夜久久久久久久| 欧美精品videofree1080p| 日韩欧美精品网址| 欧美xxxx做受欧美| 亚洲福利影片在线| www.日韩.com| 青青草原一区二区| 久久6免费高清热精品| 国产精品久久久久久av福利| 亚洲精品久久久久久久久久久| 性夜试看影院91社区| 久久久久久亚洲精品中文字幕| 在线国产精品视频| 国产精品一区久久| 亚洲精品白浆高清久久久久久| 久久久久久亚洲精品| 日韩一区二区三区国产| 亚洲欧美激情四射在线日| 在线视频日本亚洲性| 日韩小视频在线观看| 久久伊人精品一区二区三区| 欧美电影电视剧在线观看| 在线观看欧美日韩| 丝袜一区二区三区| 色妞久久福利网| 国产亚洲成av人片在线观看桃| 久久精品91久久久久久再现| 2019中文字幕全在线观看| 久久久在线观看| 国产一区二区三区日韩欧美| 亚洲人成绝费网站色www| 国产精品91久久| 美女性感视频久久久| 亚洲人成电影网站色xx| 在线国产精品视频| 成人性生交大片免费看视频直播| 成人免费高清完整版在线观看| 26uuu亚洲国产精品| 国模视频一区二区三区| 亚洲一区久久久| 欧美—级a级欧美特级ar全黄| 国产亚洲人成网站在线观看| 亚洲国产福利在线| 日韩av在线资源| 91啪国产在线| 538国产精品视频一区二区| 91系列在线播放| 91sao在线观看国产| 另类色图亚洲色图| 日本不卡免费高清视频| 色综合久久久888| 精品国产91久久久久久| 91黑丝在线观看| 成人疯狂猛交xxx| 亚洲国产天堂网精品网站| 91在线免费网站| 国产99久久久欧美黑人| 三级精品视频久久久久| 亚洲精品女av网站| 欧美精品免费播放| 国产亚洲精品久久久优势| 日韩成人激情影院| 久久久久久久久久国产| 日韩美女av在线| 国产91ⅴ在线精品免费观看| 国产亚洲精品久久久久久777| 少妇久久久久久| 日韩在线视频线视频免费网站| 日韩欧美在线观看视频| 欧美天天综合色影久久精品| 国产91精品视频在线观看| 日韩电影在线观看永久视频免费网站| 福利一区视频在线观看| 成人妇女淫片aaaa视频| 欧美电影第一页| 韩国美女主播一区| 亚洲精品成人免费| 成人网在线免费观看| 精品无人区太爽高潮在线播放| 国产精品一区二区久久久| 欧美黑人xxx| 欧美日韩亚洲激情| 亚洲欧美中文字幕在线一区| 久久在精品线影院精品国产| 国产精品爽爽爽| 久久中文久久字幕| 国产精品三级久久久久久电影| 午夜精品久久久久久久男人的天堂| 亚洲毛片在线观看.| 丰满岳妇乱一区二区三区| 欧美人交a欧美精品| 精品国产鲁一鲁一区二区张丽| 最近2019中文字幕mv免费看| 欧美综合在线观看| 欧美黄色www|