欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

用xslt將xml解析成xhtml的代碼_Xml教程

編輯Tag賺U幣
教程Tag:XMLxhtmlxslt添加

推薦:一個用xslt樣式將xml解析為xhtml的類TransformBinder(兼容FF和IE7.0)
這幾天一直在研究xslt轉換xml為xhtml,前面文章有介紹 使用xslt將xml解析成xhtml 的文章

使用xslt進行解析的基本格式是這樣的:如
復制代碼 代碼如下:www.ghpqjb.com

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method='html' version='1.0' encoding='GB2312' indent='yes'/>
<xsl:template match="/">
<html>
<body>
//這里可以包含一些xhtml的標簽
</body>
</html>
</xsl:template>
</xsl:stylesheet>

XSL 指擴展樣式表語言(EXtensible Stylesheet Language),xsl是xml的樣式表,xsl 包括3部分,分別是:xslt(一種用于轉換 XML 文檔的語言)、x-path(一種用于在 XML 文檔中導航的語言)、xsl-fo(一種用于格式化 XML 文檔的語言),可以在http://www.w3cschool.cn/這個網站中找到相關內容的教程。
像前面代碼描述的那樣,xslt以xml的版本作為開始,用<xsl:style-sheeet ...>...</xsl:style-sheeet>的格式進行轉換。
由于是初次接觸xslt,對它了解并不是很透徹,下面只是羅列一些我在學習和使用它的時候碰到的一些要點;
一、遞歸以及傳參數方法:
以一顆家族樹為例子,xml文件是這樣的:
復制代碼 代碼如下:www.ghpqjb.com

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="digui.xsl"?>
<person name="Otto" sex="mael" age="60">
  <person name="Sandra" sex="mael" age="35">
  <person name="Lichao" sex="femael" age="34">
   <person name="Zhangsan" sex="mael" age="12"/>
  </person>
  <person name="Eric" sex="femael" age="36">
   <person name="HaLi" sex="mael" age="18"/>
  </person>
  <person name="Lisi" sex="mael" age="30">
   <person name="HeLi" sex="mael" age="6"/>
   <person name="Andy" sex="femael" age="13"/>
  </person>
  </person>
</person>

現在要寫一個xslt把家族的關系給表達出來,其實家族的關系就是一顆家族樹,所以我們通過輸出不同層次的縮進來表達這樣的關系,最大的祖宗,然后按輩份分別進行縮進,最小輩份的排在最后面,縮進最多,這樣一顆樹的層次就出來了;下面是xsl文件的代碼:
復制代碼 代碼如下:www.ghpqjb.com

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method='html' version='1.0' encoding='GB2312' indent='yes'/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="person">
<xsl:with-param name="level" select="'0'"/>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="person">
<xsl:param name="level"/>
<p style="text-indent:{$level}em">name:<xsl:value-of select="@name"/>,sex:<xsl:value-of select="@sex"/>,age:<xsl:value-of select="@age"/></p>
<xsl:apply-templates select="person">
<xsl:with-param name="level" select="$level + 2"/>
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>

在這里我們先在模板中定義了一個叫level的參數,用<xsl:param name="level"/>這樣的語法,然后在主template(<xsl:template match="/">...</xsl:template>)添加模板的時候給參數賦值,
<xsl:apply-templates select="person"> <xsl:with-param name="level" select="'0'"/> </xsl:apply-templates>,參數level的值一開始賦值為“0”,而我們用參數level的值($level)來作縮進的值,如text-indent:{$level}em,所以渲染xml內容的時候,第一層沒有縮進,渲染完第一層后,我們通過
<xsl:apply-templates select="person">
<xsl:with-param name="level" select="$level + 2"/>
</xsl:apply-templates>
這樣的方法將參數level的值進行了累加從而實現了遞歸,這樣每渲染一層,參數值就加上2,從而實現了不同層次的縮進來實現家族樹的結構;這里還要說一下,我們通過@+屬性如@name來取節點屬性的值。
二、用參數實現隔行換色:
還是引用上面的例子,以及參數level,我們在遞歸的時候給參數+1(奇數)而不是+2 (偶數),通過(.. test="$level mod 2 = 0")或(.. test="$level mod 2 = 1")就可以實現選取奇數行還是偶數行,我們用<xsl:choose> <xsl:when test="$level mod 2 = 0">...</xsl:when> <xsl:otherwise>...</xsl:otherwise> </xsl:choose>給奇數行和偶數行不同的background-color,從而實現了隔行換色的效果,具體代碼如下:
復制代碼 代碼如下:www.ghpqjb.com

<?xml version="1.0" encoding="GB2312"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method='html' version='1.0' encoding='GB2312' indent='yes'/>
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="person">
<xsl:with-param name="level" select="'0'"/>
</xsl:apply-templates>
</body>
</html>
</xsl:template>
<xsl:template match="person">
<xsl:param name="level"/>
<xsl:choose>
<xsl:when test="$level mod 2 = 0">
<p style="text-indent:{$level}em;background-color:#DDD">name:<xsl:value-of select="@name"/>,sex:<xsl:value-of select="@sex"/>,age:<xsl:value-of select="@age"/></p>
</xsl:when>
<xsl:otherwise>
<p style="text-indent:{$level}em;background-color:#EEE">name:<xsl:value-of select="@name"/>,sex:<xsl:value-of select="@sex"/>,age:<xsl:value-of select="@age"/></p>
</xsl:otherwise>
<xsl:apply-templates select="person">
<xsl:with-param name="level" select="$level + 1"/>
</xsl:apply-templates>
</xsl:template>
</xsl:stylesheet>

三、符號轉義以及CDATA語法:
目前碰到的只有“<”和“>” 要轉義成<和>如果在表達式里出現這兩個符號,頁面在預覽的時候就會報錯;
另外我們需要將原文件的內容原封不動的輸出來,包括換行或上面的大于和小于號等頁面元素,這時候就需要CDATA這個標簽, CDATA全稱character data,翻譯為字符數據,數據不進行轉義直接輸出。語法格式如下:
<![CDATA[這里放置需要顯示的字符]]>
例如:
<![CDATA[<person name="ason"></person>]]>
在頁面上顯示的內容將是"<person name="ason"></person>";
四、幾個教程中并沒有提到的名詞:
1、local-name();例子:<xsl:value-of select="local-name()"/>,這里所表達的意思就是當前節點的名字。
2、<xsl:call-template name="" mode="">...</xsl:call-template>,call-template和apply-template的區別,簡單說apply是應用,call是調用。
用apply時,引擎自動搜索與當前select指定xpath的匹配節點相匹配的template(該template必須有屬性match)并使用該template進行處理,此時需要指定的是select的path。
用call時就跟其它語言調用函數一樣,必須指定name屬性,相應的,該template必須有name屬性,當然,也可以在這時with-param(當然相應的模板中有對應的param才行,不過這個不強制要求)。通過設置mode屬性可以調用同一內容的不同表現形式,這個由自己去定義。
3、count(ancestor::*)這種寫法是計算當前節點有多少個祖先節點,當然 ancestor也可以用child,following-sibling等xpath關系。
五、對于要符合多條件的判斷,xslt不能很好的支持:
以家族樹為例,我要取一個位于第二層的,名字叫Lichao的人,如果按字面理解我們可以寫成<xsl:when test="count(ancestor::*) =2 && *[@name] = 'Lichao'">...</xsl:when>,但是這樣寫在預覽xml的時候就會報錯,我也想用條件里面套條件這樣的寫法,也不符合語法,查了很多相關的資料,沒有找到很好的解決辦法。
以上是在學習和使用xslt對xml進行解析的過程中的一些感想和記錄,xslt很強大,有很多功能都沒有涉及,當然,我還要繼續學習和研究。

分享:jscript與vbscript 操作XML元素屬性的代碼
jscript與vbscript 操作XML元素屬性的代碼,需要的朋友可以參考下。

來源:模板無憂//所屬分類:Xml教程/更新時間:2013-04-22
相關Xml教程
欧美另类视频| 91丝袜一区二区三区| 亚洲日本免费电影| 国产精品一区二区三区99| 亚洲精品一区在线观看| 美女被啪啪一区二区| 最新中文字幕av| 久久精品视频在线观看免费| 搡老熟女老女人一区二区| 日韩制服一区| 国产精品1区2区3区| 日韩国产精品亚洲а∨天堂免| 欧美人与性禽动交精品| 黄色香蕉视频在线观看| 噜噜噜狠狠夜夜躁精品仙踪林| 91碰在线视频| 日韩视频在线观看免费| 亚洲熟妇无码一区二区三区| 一区二区视频在线免费观看| 亚洲电影av| 欧美日韩一区二区三区不卡| 国产精品99久久久久久久| 90岁老太婆乱淫| 91精品国产自产精品男人的天堂| 久久嫩草精品久久久精品| 9久草视频在线视频精品| 一二三四区精品视频| 日韩av片电影专区| 免费观看污网站| 久久精品国产福利| 91麻豆123| 欧美成人一区二区三区电影| 成人性视频欧美一区二区三区| 午夜精品久久久久久久爽| 石原莉奈一区二区三区在线观看 | 日本乱人伦一区| 国产成人看片| 国产又粗又硬又长又爽| 精品久久久久久久| 欧美午夜精品伦理| 国产日韩亚洲精品| 免费在线一级片| 日韩免费特黄一二三区| 色视频成人在线观看免| 精品国产一区二区三| 久艹视频在线观看| 欧美一区二区三区久久精品茉莉花| 91福利社在线观看| 久久久99国产精品免费| 国产一级二级三级| 亚洲无线视频| 日韩欧美一二三| a级网站在线观看| 91麻豆视频在线观看| 日韩国产成人精品| 亚洲欧美日韩综合| 无码人妻丰满熟妇区96| 人妻偷人精品一区二区三区| 国产jizzjizz一区二区| 久久国产精品久久久久久久久久| 一区二区三区视频网| 日本国产欧美| 国产精品久久久久久久久快鸭| 国产97在线视频| 精品人伦一区二区三电影| 亚洲裸色大胆大尺寸艺术写真| 韩曰欧美视频免费观看| 精品一区二区不卡| 最新中文字幕一区| 久久久蜜桃一区二区人| 亚洲最大在线视频| www.xxx亚洲| 欧美aaaaaa| 亚洲欧美国产毛片在线| 99九九视频| 久久久久成人精品无码| 99热精品在线| 亚洲免费视频观看| 手机在线免费观看毛片| 全球中文成人在线| 亚洲乱码国产乱码精品精的特点 | 国产精品久久久久久久久久直播 | 一区二区三区在线播放欧美| 亚洲成人福利在线观看| 欧美v亚洲v综合v国产v仙踪林| 中文字幕亚洲一区二区va在线| 成人性生交大片免费看视频直播| 青青草成人免费| 亚洲精品影视| 中文字幕无线精品亚洲乱码一区| wwwwwxxxx日本| 综合激情网...| 欧美色欧美亚洲高清在线视频| 日本一区高清不卡| 国产精品福利电影| www.av亚洲| 国产精品精品久久久久久| 亚洲不卡在线播放| 国产欧美大片| www.亚洲一区| 在线观看亚洲免费视频| 亚洲人成网站77777在线观看 | 国产1区2区3区4区| 亚洲综合国产| 色婷婷久久一区二区| www.com日本| 日本一区二区在线看| 日韩一区二区在线观看视频| 午夜精品一区二区三区电影天堂| 97视频中文字幕| 六月丁香激情综合| 国产制服丝袜一区| 欧美一级片久久久久久久| 娇小11一12╳yⅹ╳毛片| 亚洲午夜一级| 日韩中文理论片| 日本少妇一级片| 超碰成人久久| 亚洲国产精品网站| 中文字幕第22页| 久久成人高清| 欧美xfplay| 亚洲免费看av| 日韩三级视频| 日韩女优毛片在线| 亚洲77777| 要久久电视剧全集免费| 精品三级在线观看| 狠狠干狠狠操视频| 国产精品一区二区三区av麻| 精品国产制服丝袜高跟| 高潮一区二区三区| 国产99久久| 亚洲国产精品高清久久久| 男人的天堂最新网址| 九一亚洲精品| 亚洲护士老师的毛茸茸最新章节| 成人亚洲免费视频| 成人aaaa| 亚洲欧美国产va在线影院| 国产人妻精品午夜福利免费| 亚洲人成免费网站| 日韩在线免费观看视频| 91l九色lporny| 免费日韩视频| 91精品国产91久久久久久不卡| 538任你躁在线精品视频网站| 久久精品av麻豆的观看方式| 国产98色在线| 中文字幕日韩免费| 久久久精品国产99久久精品芒果| 国产在线精品一区二区三区》| 国产夫绿帽单男3p精品视频| 亚洲欧美电影一区二区| youjizz.com亚洲| 综合久久av| 欧美二区乱c少妇| 天堂在线中文在线| 亚洲v在线看| 久久久成人精品| 强制高潮抽搐sm调教高h| 精品一区二区三区免费观看| 国产综合色香蕉精品| 91美女精品网站| 亚洲男人的天堂一区二区| 正在播放一区二区三区| 国产一区二区三区| 欧美一卡二卡在线观看| 日本女人黄色片| 亚洲一级电影| 97国产在线视频| 精品国产免费观看| 久久婷婷久久一区二区三区| 欧美国产一二三区| 九色成人搞黄网站| 91麻豆精品国产综合久久久久久 | www.精品| 欧美亚洲自拍偷拍| 国产三级生活片| 国内成人在线| 欧洲午夜精品久久久| 中文字幕av无码一区二区三区| 国产精品九色蝌蚪自拍| 男人草女人视频| 激情亚洲另类图片区小说区| 亚洲欧洲国产伦综合| 日本一卡二卡在线播放| 国产成人午夜99999| 精品国产一区二区三区麻豆小说 | 91丝袜国产在线播放| 茄子视频成人在线观看| 亚洲免费一区| 亚洲国产精品成人一区二区| 日本精品在线观看视频| 国产精品伊人色| 欧美aaaaa喷水| 国产午夜精品一区在线观看| 精品91自产拍在线观看一区| 老牛影视av老牛影视av| 国产呦萝稀缺另类资源| 精品一区二区三区免费毛片| 成人免费毛片嘿嘿连载视频…| 欧美一区三区二区| 男男做爰猛烈叫床爽爽小说| 麻豆一区二区三| 国产精品国产精品国产专区不卡| 美女色狠狠久久| 亚洲精品在线电影| 91动漫免费网站| 99久久精品国产麻豆演员表| 中文字幕成人一区| 亚洲深夜福利在线观看| 久久国产精品久久久久| 欧美人一级淫片a免费播放| 亚洲免费观看高清在线观看| 无码日韩人妻精品久久蜜桃| 欧美日韩久久| 国产欧美精品日韩| 亚洲 国产 欧美 日韩| 91精品久久久久久久99蜜桃| 最近中文字幕免费视频| 成人蜜臀av电影| 日本黄色a视频| 欧美精品久久久久久| 97在线精品国自产拍中文| 国产精品视频在线观看免费 | 亚洲欧美成人综合| 成人性色av| 高清国产一区二区三区四区五区| 亚洲女人初尝黑人巨大| www.av视频在线观看| 亚洲欧美成aⅴ人在线观看| 亚洲欧美在线精品| 日日骚欧美日韩| 国内精品视频免费| 超碰97久久国产精品牛牛| 精品久久久91| 中文字幕av网站| 欧美午夜免费电影| 日本一级免费视频| 久久精品人人爽人人爽| 日本少妇高潮喷水视频| 99精品国产一区二区青青牛奶| 91免费版黄色| 伊人久久影院| 欧美伦理91i| 99久久一区二区| 538prom精品视频线放| 二区三区四区视频| 亚洲视频一区二区在线| 欧美视频国产视频| 国内成人免费视频| 天天干天天操天天干天天操| 五月天久久久| 亚洲最大福利视频| 日韩中文字幕无砖| 欧美高跟鞋交xxxxxhd| www.超碰在线.com| 日韩一区二区在线看| 国产suv一区二区三区| 亚洲精品久久久蜜桃| 中文字幕剧情在线观看| 国产精品一区二区黑丝| 亚洲色图都市激情| 亚洲激情另类| 精品久久久久亚洲| 国产一区不卡| 国产精品人人做人人爽| www.欧美视频| 欧美激情一区二区三区成人| 好吊色一区二区| 欧美精品一区二区三区很污很色的 | 国产人与禽zoz0性伦| 成人免费小视频| 91丨porny丨九色| 99精品欧美一区| 免费看黄色一级大片| 久久99国产精品免费网站| 久久国产精品免费观看| 亚洲国产综合在线看不卡| 激情小说综合区| 精品国产一区二区三区| 成人h片在线播放免费网站| 欧美三级一区| 久久久免费av| 国产一区二区三区朝在线观看| xxxx欧美18另类的高清| 国精品人妻无码一区二区三区喝尿| 亚洲精品影视在线观看| 中文字幕欧美人妻精品| 日韩美女视频在线| 亚洲第一在线播放| 3atv一区二区三区| 国产精品免费av一区二区| 欧美性受极品xxxx喷水| 全网免费在线播放视频入口 | 91ts人妖另类精品系列| 亚洲一区二区三区四区的 | 日韩影视高清在线观看| 国产精品久久久久久久久久新婚| 精品一区二区三区视频在线播放| 91av网站在线播放| 欧美日韩午夜电影网| 日本欧美一级片| 亚洲成人偷拍| 国产精品久久久久秋霞鲁丝 | 夜夜亚洲天天久久| 亚洲综合色一区| 一区二区三区小说| www..com.cn蕾丝视频在线观看免费版 | 黄色香蕉视频在线观看| 色综合一个色综合| www色aa色aawww| 在线视频国内一区二区| 国产性一乱一性一伧一色| 欧美日产在线观看| 少妇一级淫片免费放中国| 欧美精品自拍偷拍| 在线永久看片免费的视频| 精品sm捆绑视频| 国产精品色综合| 最近2019年中文视频免费在线观看| 无码国产精品一区二区色情男同| 久久精品国产免费观看| 日韩在线影院| 久久乐国产精品| 亚洲成人高清| 国产精品96久久久久久| 欧美电影在线观看完整版| 亚洲影院高清在线| 欧美大片aaaa| 日本视频一区二区不卡| 亚洲女优在线| 1024av视频| 99麻豆久久久国产精品免费| 久热在线视频观看| 国产精品免费aⅴ片在线观看| 亚洲观看黄色网| 亚洲综合一区二区三区| 日韩一级片大全| 欧美精品v国产精品v日韩精品| 中文字幕一区二区人妻视频| 日韩电影网在线| 婷婷五月综合久久中文字幕| 性欧美办公室18xxxxhd| xvideos.蜜桃一区二区| 99精彩视频| 极品av少妇一区二区| 法国空姐在线观看免费| 国内久久精品视频| 中文字幕成人免费视频| 国产精品电影一区二区| 特黄一区二区三区| 欧美日本在线播放| 91精品国自产| 久久91精品国产91久久久| 日韩欧美激情电影| 国产精品制服诱惑| 亚洲毛片播放| 能在线观看的av| 久久久久国色av免费看影院| 久久久久亚洲av无码专区桃色| 色香蕉成人二区免费| 久久精品视频2| 在线性视频日韩欧美| 久久久久毛片| 91精品免费| 99热在线精品观看| 国产三区在线视频| 中文字幕av一区二区三区免费看| 一二三四在线观看视频| 欧美一级电影网站| 好吊色一区二区| 国产91在线播放精品91| 久久国产电影| 国产又粗又猛又爽又黄的网站| 天堂精品在线视频| 91精品国产麻豆| 99热这里精品| 国产91精品不卡视频| 精品国产网站| 99热这里只有精品7| www.欧美色图| 1024在线看片| 精品久久人人做人人爰| 香蕉视频黄色片| 国产精品亚洲аv天堂网| 欧美午夜久久| 激情内射人妻1区2区3区| 椎名由奈av一区二区三区| 国产亚洲精品成人| 国产午夜精品视频| 久久天堂久久| 久久国产精品99久久久久久丝袜| 日韩国产在线观看一区| www.污网站| 色偷偷一区二区三区| 国产精品国产av| 欧美一级免费视频| 911精品美国片911久久久|