一起草最新网址_日韩一区二区麻豆国产_91视频婷婷_日本一区二区视频在线_日韩激情一区二区三区_国产另类第一区_成人免费在线播放视频_亚洲永久精品ww.7491进入_久久这里有精品视频_久久精品一级片_日韩av在线网页_波多野结衣不卡视频

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

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

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

使用xslt進(jìn)行解析的基本格式是這樣的:如
復(fù)制代碼 代碼如下:www.zhaotila.cn

<?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的標(biāo)簽
</body>
</html>
</xsl:template>
</xsl:stylesheet>

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

<?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>

現(xiàn)在要寫一個(gè)xslt把家族的關(guān)系給表達(dá)出來(lái),其實(shí)家族的關(guān)系就是一顆家族樹,所以我們通過(guò)輸出不同層次的縮進(jìn)來(lái)表達(dá)這樣的關(guān)系,最大的祖宗,然后按輩份分別進(jìn)行縮進(jìn),最小輩份的排在最后面,縮進(jìn)最多,這樣一顆樹的層次就出來(lái)了;下面是xsl文件的代碼:
復(fù)制代碼 代碼如下:www.zhaotila.cn

<?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>

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

<?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>

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

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

來(lái)源:模板無(wú)憂//所屬分類:Xml教程/更新時(shí)間:2013-04-22
相關(guān)Xml教程
精品国产免费人成电影在线观看四季| 台湾佬中文在线| 亚洲第一福利在线观看| 亚洲天堂网在线观看视频| 麻豆传媒一区二区| 在线精品亚洲一区二区不卡| 黄色在线视频网址| 国产中文字幕日韩| 91网站在线播放| 精品99在线视频| 亚洲人成电影网站色| 日韩精品三区四区| 少妇愉情理伦片bd| 亚洲乱码国产乱码精品精| 国产成人手机在线| 樱空桃在线播放| 亚洲韩国欧洲国产日产av | 亚洲天堂av一区二区三区| 欧美床上激情在线观看| 97se狠狠狠综合亚洲狠狠| 国产精品久久久久久久无码| 欧美黑人性猛交| 国产欧美精品一区aⅴ影院| 日本少妇一级片| 国产成人精品久久| 精品美女永久免费视频| 国产日韩欧美一区二区东京热| 日韩在线电影一区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 在线免费观看一区二区| 日本精品一区二区三区高清 久久 日本精品一区二区三区不卡无字幕 | 亚洲精品一区二区久| 国产福利一区二区三区视频在线 | 77777亚洲午夜久久多人| 欧美国产1区2区| 成年免费在线观看| 精品中文字幕av| 日本久久久久久| **欧美大码日韩| 老女人性淫交视频| 日韩成人三级视频| 亚洲高清不卡av| 成人av手机在线观看| 怡红院一区二区三区| 午夜精品短视频| 日韩av在线免费观看一区| 91麻豆国产自产在线观看| 超碰caoprom| 黄色99视频| 欧美性生活一区| 黄色美女一级片| 国产成人一区二区在线观看| 亚洲一区二区在线免费观看| 国内精品免费午夜毛片| 91电影在线观看| 日本va欧美va瓶| 国产精品第一页在线观看| 国产麻花豆剧传媒精品mv在线| 久久精品国产免费观看| 色播五月激情综合网| 日本欧美久久久久免费播放网| 日本人添下边视频免费| 亚洲资源在线看| 精品久久久久久久久久久久久久久 | 无码人妻久久一区二区三区蜜桃| 欧美 日韩 国产在线| 一个人www欧美| 欧美午夜激情在线| 美女久久网站| 又色又爽的视频| 国产精品69页| 欧美一区免费视频| 国产精品91免费在线| 一色桃子一区二区| 欧美在线啊v一区| 国产精品麻豆视频| 国产成人av免费看| 极品白嫩丰满美女无套| 亚洲欧洲日产国码无码久久99| 欧美激情综合亚洲一二区 | 97成人在线观看| 超碰97在线资源站| 超碰网在线观看| 欧美国产视频在线观看| 久久久久久久久中文字幕| 在线免费观看成人短视频| 国产日韩精品一区| 黄色一级a毛片| 熟女av一区二区| 日韩精品综合在线| 动漫一区二区在线| 美女国内精品自产拍在线播放| 91精品国产综合久久久久久久| 久久久久久久精| 国产一区在线视频| 97在线播放免费观看| 91人妻一区二区| 日韩爱爱小视频| 久艹在线免费观看| 99视频日韩| 国产精品视频yy9099| 2019国产精品自在线拍国产不卡| 欧美在线|欧美| 自拍偷拍国产亚洲| 国产福利一区二区三区在线视频| 人人狠狠综合久久亚洲| 一区两区小视频| 羞羞色院91蜜桃| 精人妻无码一区二区三区| 欧美福利视频一区二区| www.99re7.com| 久久精品一级片| 久久免费看少妇高潮v片特黄| av网站免费在线看| 韩国女同性做爰三级| 欧美做受高潮6| yy6080午夜| 黄色av网址在线观看| 中文字幕在线免费看线人| 91亚洲免费视频| 欧美高清精品一区二区| 性生活免费在线观看| 亚洲人视频在线| www.com日本| 国产综合精品在线| 欧美特黄一区二区三区| 动漫av在线免费观看| 国产九九热视频| av在线播放网址| 中文字幕第10页| 久久久久久久久久久久| 久久久久久久久久一区二区三区| 国产福利在线免费| 中文字幕天堂av| 91网站免费视频| 久久精品99久久久久久| 中文字幕精品无码亚| 国产情侣在线播放| 俄罗斯嫩小性bbwbbw| 性xxxx视频| 不卡区在线中文字幕| 亚洲男同性恋视频| 在线观看免费一区| 亚洲欧洲视频在线| 久久99国产综合精品女同| 欧美亚洲另类在线| 精品国产一二| 无码粉嫩虎白一线天在线观看| 日韩视频在线免费播放| 一级全黄肉体裸体全过程| 激情视频免费网站| 最近中文字幕无免费| 妺妺窝人体色www聚色窝仙踪 | 91久久精品一区二区别| 国产日韩二区| 亚洲精品蜜桃久久久久久| 视频在线观看免费高清| 欧美精品一级片| av中文字幕免费| 夫妻av一区二区| 91.麻豆视频| 亚洲欧美日韩另类| 国产成人久久精品77777综合 | 一夜七次郎国产精品亚洲| 欧美一区三区二区| 亚洲欧美国产精品| 国产免费亚洲高清| 成人在线观看你懂的| 成人免费视频入口| 五月婷在线视频| 国产suv精品一区二区三区| 亚洲人成网站影音先锋播放| 日韩一级免费一区| 国产一区二区在线免费| 美女日批免费视频| 丝袜 亚洲 另类 欧美 重口| 无码人妻丰满熟妇奶水区码| 久久精品国产一区二区三区免费看| 国产婷婷色一区二区三区在线| 日韩电视剧在线观看免费网站| 欧美视频在线观看 亚洲欧| 欧美无人高清视频在线观看| 久久久免费av| 欧美 日韩 国产精品| 永久免费观看片现看| 国产一区二区久久| 欧美大片在线观看| 不卡视频一区| 亚洲妇熟xx妇色黄蜜桃| 中文在线免费观看| 欧美国产一区视频在线观看| 中文字幕一区二区三区电影| 日韩欧美国产二区| 在线观看日本中文字幕| 免费国产亚洲视频| 精品国产电影一区二区| 蜜桃视频成人| 白白色免费视频| 久热精品在线| 欧美精品精品一区| 不卡视频一区| 国产精品手机视频| 国产亚洲天堂网| 99热这里是精品| 五月天国产精品| 国产欧美日韩专区发布| 欧美成人国产精品一区二区| 久久 天天综合| 色阁综合伊人av| youjizz.com在线观看| 亚洲综合久久网| 精品国产成人在线| 国产日韩亚洲欧美| 最新版天堂资源在线| 天堂av一区二区三区| 欧美一区二区三区爱爱| 青青影院一区二区三区四区| 男女视频免费看| 香蕉av福利精品导航| 国产精品伦子伦免费视频| 亚洲中文字幕一区| 波多野洁衣一区| 国产69精品久久久久99| 午夜精品福利视频| 亚洲这里只有精品| 日韩电影网1区2区| 亚洲人成网在线播放| 色婷婷成人在线| 污污网站免费在线观看| 伊人精品在线观看| 久久美女福利视频| 美女视频网站久久| 中文字幕亚洲欧美一区二区三区 | 欧美精品videosex性欧美| 国产人妻黑人一区二区三区| 成人禁用看黄a在线| 亚洲午夜久久久久久久| 日本熟妇人妻中出| 国产精品综合在线视频| 欧美精品www| 免费看91的网站| 亚洲色图视频免费播放| 91麻豆精品91久久久久久清纯 | 91蜜桃网址入口| 成人免费视频网| 91精品国产乱码久久久张津瑜| 欧美精品18+| 日韩少妇内射免费播放| 国产成人一区二区精品非洲| 国产91色在线免费| 国产女同在线观看| 国产视频一区在线| 免费黄色在线视频| 亚洲国产精品久久一线不卡| 一区二区在线不卡| 国产高清在线精品| 国产欧美一区二区三区在线| 国产日韩在线免费观看| 欧美成人一二三| 天天鲁一鲁摸一摸爽一爽| 欧美日韩视频在线观看一区二区三区| 欧美精品一区免费| 91欧美激情一区二区三区成人| 国产精品视频福利| 五月婷婷综合在线观看| 国产精品午夜久久| 亚洲精品一区二| 成人免费观看av| 老司机精品福利在线观看| 老牛嫩草一区二区三区日本| 国产精品久久久91| 亚洲AV无码国产精品午夜字幕 | 中文字幕av一区二区| 国产伦精品一区二区三区视频女| 6080午夜不卡| 国产交换配乱淫视频免费| 日韩欧美国产成人一区二区| 3d动漫精品啪啪一区二区下载 | 精品免费国产| 国产乱对白刺激视频不卡| 国内外成人免费视频| 国产精品自在欧美一区| 伊人狠狠色丁香综合尤物| 国产成a人亚洲| 日本一区二区三区视频免费看| 蜜臀av性久久久久蜜臀aⅴ流畅| 99国产超薄肉色丝袜交足的后果 | 99久久99久久免费精品蜜臀| 国产一区二区四区| 亚洲色图都市小说| 欧美wwwwwww| 欧美性少妇18aaaa视频| 免费的av网站| 在线性视频日韩欧美| 看黄色一级大片| 97香蕉久久超级碰碰高清版| 午夜精品久久久久久久第一页按摩| 国产精品久久久久久搜索| 久久91精品国产91久久小草 | 麻豆精品精品国产自在97香蕉| 中文字幕日韩一区二区三区不卡 | 3d动漫一区二区三区| 91搞黄在线观看| 大又大又粗又硬又爽少妇毛片| 国产亚洲精品一区二555| 亚洲一卡二卡在线| 成人网页在线免费观看| 国产精品亚洲综合一区在线观看| 国产精品又粗又长| 欧美日韩国产色站一区二区三区| 尤物视频一区二区| 人妻精油按摩bd高清中文字幕| 精品久久久久久久久久久久久久久| 黄色小视频在线免费看| 国产精品普通话| 91亚洲精品久久久蜜桃| 岛国大片在线免费观看| 久久久999成人| 日韩高清不卡一区| 国产美女网站在线观看| 在线一区二区三区| 亚洲免费激情视频| 成人淫片在线看| 国产欧美日本一区二区三区| 丰满少妇xbxb毛片日本| 精品自在线视频| av成人免费在线| 日韩av无码一区二区三区不卡| 欧美老女人性视频| 成人一区二区视频| 绯色av蜜臀vs少妇| 性色av一区二区三区| 国产91综合一区在线观看| 手机看片国产精品| 国产91成人在在线播放| 久久久不卡网国产精品一区| 91导航在线观看| 欧美在线观看你懂的| 国产精品6666| 在线成人av电影| 日韩精品自拍偷拍| 三级久久三级久久| 天天色综合天天色| 欧美大片免费看| 国产精品视频看| 日操夜操天天操| 中国 免费 av| 亚洲人在线视频| 91美女精品福利| 国产人与禽zoz0性伦| 国产99视频精品免费视频36| 欧美视频日韩视频在线观看| 色综合久久久久久| 欧美视频国产视频| 成人国产精品久久久| 欧美日韩国产综合视频在线观看| 东京干手机福利视频| 中文字幕永久视频| 国产精品亚洲片夜色在线| 欧美日韩在线直播| 久久精品免费| 人妻无码中文久久久久专区| 91亚洲精品视频| 欧美大片拔萝卜| 99在线视频精品| 婷婷综合在线视频| 一区二区精品在线观看| 亚洲美女免费精品视频在线观看| 成人美女在线观看| 国产一级一片免费播放| 一本久道高清无码视频| 国产一区二区在线视频| 欧美成人另类视频| 杨幂一区欧美专区| 毛片精品免费在线观看| 亚洲一区二区成人在线观看| 理论片中文字幕| 91成人福利视频| 国产成人精品视频ⅴa片软件竹菊| 国产精品中文久久久久久久| 欧美成人高清电影在线| 91麻豆.com| 性猛交xxxx乱大交孕妇印度| 9.1成人看片| 日韩视频 中文字幕| 国产日韩欧美中文在线播放| 国产小视频国产精品| 偷拍亚洲欧洲综合| 韩国v欧美v日本v亚洲v| 亚洲中文无码av在线| jizz欧美性20| 成人免费aaa| 久久精品综合一区| 久久久久久久久国产精品| 在线91免费看| 国产精品网站在线观看| 肥臀熟女一区二区三区| 国产精品第56页| 麻豆精品国产传媒av| 国产又粗又大又爽的视频| 日本久久91av| 中文字幕精品国产| 欧美伊人精品成人久久综合97 | 亚洲福利一区二区三区| 粉嫩av一区二区三区粉嫩| 亚洲伦理在线观看| 日韩精品1区2区| 波多野结衣三级视频| 黄色动漫网站入口| 宅男av一区二区三区|