日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

XSL转换XML

發(fā)布時間:2023/12/15 asp.net 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XSL转换XML 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

XSL轉(zhuǎn)換XML

XSL概述

XSL(Extensible Stylesheet Language)是可擴展樣式表語言。

包含

  • XSLT
  • XPATH
  • XSL
  • 什么是XSLT?

    • XSLT => (Extensible Stylesheet Language Transformations)
    • XSLT是XSL中最重要的部分
    • XSLT可以將XML文檔轉(zhuǎn)化為另外一種XML文檔
    • XSLT可以使用XPath在XML文檔中進行導(dǎo)航
    • XPath是一個W3C標準

    XSL的意義

    • 將文檔內(nèi)容和表現(xiàn)形式分離
    • 在不同的應(yīng)用之間傳輸數(shù)據(jù)

    XSLT和CSS的比較

    • CSS不能重新排序文檔中的元素
    • CSS不能判斷和控制哪個元素被顯示,哪個不行
    • CSS不能對文檔的內(nèi)容進行操作

    XSLT的應(yīng)用包括

    • 查看為目的添加元素怒
    • 從現(xiàn)在內(nèi)容創(chuàng)建新的內(nèi)容
    • 從XML文檔中提取信息
    • 在不同的XML字典或模型之間進行轉(zhuǎn)換
    • 將XML文檔轉(zhuǎn)化為HTML

    在XML中使用XSL

    <?xml version="1.0" ?> <xsl:stylesheet type="text/xsl" xmlns:xsl="http://www.w3.org/TR/1.xsl">... </xsl:stylesheet>

    XSL模板

    • 模板是XSLT中最重要的概念之一
    • XSLT文件是由一個一個模板構(gòu)成的
    • 模板分為兩部分,匹配模式和執(zhí)行
    • 匹配模式定義什么節(jié)點會被當(dāng)做模板處理,執(zhí)行則定義輸出的是什么格式
  • <xsl:template>
  • <xsl:templatematch="expression"name="name"priority="number"> </xsl:template>

    xsl:template 作用是用來定義一個模板,match是匹配模板的格式。

    標記匹配模式就是描述該模板適用于那些標記,采用的是XPath表達式。

    XPath

    XPath是一門在XML文檔中查找信息的語言。可以對元素和屬性進行遍歷。

    • XPath 使用路徑表達式在XML文檔中進行導(dǎo)航
    • XPath 包含一個標準函數(shù)庫
    • XPath 是 XSLT 中的主要元素
    • XPath 是一個 W3C標準
    表達式描述
    /從根節(jié)點選取
    //從匹配選擇的當(dāng)前節(jié)點選擇文檔節(jié)點,不考慮位置
    .選擇當(dāng)前節(jié)點
    選擇當(dāng)前節(jié)點的父親節(jié)點
    @選取屬性

    例子

    路徑表達式結(jié)果
    /bookstore選取根元素bookstore
    bookstore/book選取所有bookstore的book子元素
    //book選取所有book元素,不管他們在文檔的哪里
    bookstore//book選擇屬于bookstore元素后代的bool元素,不管他們在哪里
    //@lang選取所有名字為lang的屬性
    /bookstore/book[1]選取屬于bookstore子元素的第一個元素
    /bookstore/book[last()]選取bookstore子元素的最后一個book元素
    /bookstore/book[last()- 1]選取bookstore子元素的倒二個元素
    /bookstore/book[position()< 3]選取最前面的兩個屬于bookstore元素的子元素的book元素
    //title[@lang]選取所有擁有名為lang屬性的title元素
    //title[@lang=‘eng’]選取所有擁有名為lang屬性且值為eng的title元素
    /bookstore/book[price>35.00]選取所有bookstore元素的book元素,且其中的price元素的值必須大于35.00
    /bookstore/*選取根元素為bookstore下面的所有子元素
    //*選取文檔的所有元素
    //title[@*]選取所有帶有屬性的title元素
    //book/title | //book/price選取所有book子元素的title和price子元素
    //title| //price選取所有title和price元素
    /bookstore/book/title | //price選取所有bookstore下面的book元素的title子元素以及所有的price元素

    習(xí)題

    路徑表達式含義
    /bookstore/book選取根元素為bookstore下面的所有book子元素
    /bookstore/book[0]選取根元素為bookstore下面的所有book子元素的第一二
    /bookstore/book[price>35]/price選取根元素為bookstore下面的所有子元素為price且值大于35的所有子元素price
  • <xsl:apply-templates>
  • <xsl:apply-templates select="expression"order-by="元素名"></xsl:apply-templates>

    其中order-by默認是從大到小排序,如果加上一個’-'表示從小到大

  • <xsl:value-of>
  • <xsl:value-of select="標記匹配模式"></xsl:value-of>
  • <xsl:for-each>
  • <xsl:for-each select="標記匹配模式"> </xsl:for-each>

    可以用 <xsl:template> 和 <xsl:apply-templates>取代

    例如

    <xsl:for-each select="catalog/cd"><tr><td><xsl:value-of select="title"/></td><td><xsl:value-of select="artist"/></td></tr> </xsl:for-each>

    可以用

    <xsl:apply-templates select=“catalog/cd”/> <xsl:template match="catalog/cd"><tr><td><xsl:value-of select="title"/></td><td><xsl:value-of select="artist"/></td></tr> </xsl:template>
  • <xsl:sort>
  • 默認情況下,按照節(jié)點在文檔中出現(xiàn)的順序先后進行處理,如果希望改變,可以用xsl:sort元素

    order 用來指定排序是升序還是降序,不指定默認升序

    <xml:sort order="ascending|descending" select="匹配表達式">... </xml:sort>

    例如在foreach中使用

    <xsl:for-each select="catalog/cd"> <xsl:sort select="artist" /> <tr><td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td></tr> </xsl:for-each>

    這樣的話,默認按照 artist 升序排序

  • <xsl:copy>
  • 這個元素用于復(fù)制當(dāng)前節(jié)點標記,什么意思呢

    比如有一個這樣的xml

    <name>張三</name>

    在XSLT里面這樣寫

    <xsl:apply-templates /> <xsl:template match="*"><xsl:copy><xsl:value-of /></xsl:copy> </xsl:>

    html輸出結(jié)果會是

    <name>張三

    也就是把節(jié)點的標記輸出了

  • <xsl:node-name>
  • 這個和上面的很類似,可以獲取標記的名字,但是不包括"<“以及”>"

  • <xsl:attribute>
  • 這個元素用于向元素添加屬性

    <picture><xsl:attribute name="source"><xsl:value-of select="images/name" /></xsl:attribute> </picture>
  • <xsl:element>
  • 這個元素用于在輸出文檔中創(chuàng)建元素節(jié)點

    <picture><xsl:element name="hello world">圖片是: </xsl:element><xsl:value-of select="images/name" /> </picture>

    XSL布爾運算

    提供三種運算符

  • andandand(&&)
  • notnotnot(||)
  • ororor
  • <xsl:for-each select="//書名[@價格='99元' $and$ @出版社='IT出版社'] "><xsl:value-of select="."/> </xsl:for-each>

    上述表達式可以查找所有元素為書名且擁有屬性價格為99元,出版社是IT出版社的所有書籍,并打印出值

  • <xsl:if test="布爾表達式">
  • <xsl:template match="PEOPLE"><xsl:if test="@name='name'"><p><xsl:value-of select="@name"/></p> </xsl:if> </xsl:template>

    上述test可以查找所有PEOPLE元素下?lián)碛袑傩詎ame且值為name的所有元素,并打印出這些元素的值

  • <xsl:choose> <xsl:when> <xsl:otherwise>
  • <xsl:choose><xsl:when test="pattern1"></xsl:when><xsl:when test="pattern2"></xsl:when><xsl:otherwise></xsl:otherwise> </xsl:choose>

    choose語句有點像是高級語言的switch語句,可以判斷多個。

    在XSL中使用CSS

  • 通過嵌入HTML標記來是用style屬性
  • 把CSS代碼放在<style>以及</style>標簽之間
  • <xsl:template match="order"><HTML><HEAD><style>body {color:red;}</style> </HEAD><BODY><xsl:apply-templates select="item-info"/></BODY></HTML> </xsl:template> <xsl:template match="item-info"><p style="color:red;font-size=25">aaa</p> </xsl:template>

    習(xí)題

    編寫XSLT文件,將簡歷XML文件轉(zhuǎn)換為HTML文件,并在瀏覽器中查看輸出效果。樣式可與上題中的簡歷類似(如下圖所示),也可自行設(shè)計。

    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-iRgBaVfW-1609259167871)(C:\Users\MSI\AppData\Roaming\Typora\typora-user-images\image-20201227204513439.png)]

    <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"><xsl:template match="/"><HTML><HEAD><TITLE>xslt 轉(zhuǎn)化 xml 為 html</TITLE></HEAD><BODY><DIV class="resume">個人簡歷</DIV><DIV><xsl:apply-templates select="resume/profile"></xsl:apply-templates></DIV></BODY></HTML></xsl:template><xsl:template match="profile"><TABLE border="1">...</TABLE></xsl:template> </xsl:stylesheet>

    總結(jié)

    以上是生活随笔為你收集整理的XSL转换XML的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。