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

首頁 > 開發 > XML > 正文

巧用xslt將xml轉換成xhtml的代碼

2024-09-05 20:55:18
字體:
來源:轉載
供稿:網友

YPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

YPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">

利用xslt就可以将xml转换成xhtml的代码,随着XML规范的不断演进,在新的版本中满足每个人的需要似乎已经成为必要,接下来我们来进一步的学习吧。

使用xslt进行解析的基本格式是这样的:如

复制代码 代码如下:


xmlns:xsl="http://www.w3.org/1999/XSL/Transform">



XSL 指扩展样式表语言(EXtensible Stylesheet Language),xsl是xml的样式表,xsl 包括3部分,分别是:xslt(一种用于转换 XML 文档的语言)、x-path(一种用于在 XML 文档中导航的语言)、xsl-fo(一种用于格式化 XML 文档的语言),可以在http://www.w3cschool.cn/这个网站中找到相关内容的教程。
像前面代码描述的那样,xslt以xml的版本作为开始,用...的格式进行转换。
由于是初次接触xslt,对它了解并不是很透彻,下面只是罗列一些我在学习和使用它的时候碰到的一些要点;
一、递归以及传参数方法:
以一颗家族树为例子,xml文件是这样的:

 

复制代码 代码如下:

 





  
  
  
  

  
  
  

  
  
  
  

  


现在要写一个xslt把家族的关系给表达出来,其实家族的关系就是一颗家族树,所以我们通过输出不同层次的缩进来表达这样的关系,最大的祖宗,然后按辈份分别进行缩进,最小辈份的排在最后面,缩进最多,这样一颗树的层次就出来了;下面是xsl文件的代码:

 

复制代码 代码如下:

 



xmlns:xsl="http://www.w3.org/1999/XSL/Transform">




在这里我们先在模板中定义了一个叫level的参数,用这样的语法,然后在主template()添加模板的时候给参数赋值,
,参数level的值一开始赋值为“0”,而我们用参数level的值($level)来作缩进的值,如text-indent:{$level}em,所以渲染xml内容的时候,第一层没有缩进,渲染完第一层后,我们通过



这样的方法将参数level的值进行了累加从而实现了递归,这样每渲染一层,参数值就加上2,从而实现了不同层次的缩进来实现家族树的结构;这里还要说一下,我们通过@+属性如@name来取节点属性的值。
二、用参数实现隔行换色:
还是引用上面的例子,以及参数level,我们在递归的时候给参数+1(奇数)而不是+2 (偶数),通过(.. test="$level mod 2 = 0")或(.. test="$level mod 2 = 1")就可以实现选取奇数行还是偶数行,我们用......给奇数行和偶数行不同的background-color,从而实现了隔行换色的效果,具体代码如下:

 

复制代码 代码如下:

 



xmlns:xsl="http://www.w3.org/1999/XSL/Transform">




三、符号转义以及CDATA语法:
目前碰到的只有“” 要转义成如果在表达式里出现这两个符号,页面在预览的时候就会报错;
另外我们需要将原文件的内容原封不动的输出来,包括换行或上面的大于和小于号等页面元素,这时候就需要CDATA这个标签, CDATA全称character data,翻译为字符数据,数据不进行转义直接输出。语法格式如下:

例如:
]]>
在页面上显示的内容将是"";
四、几个教程中并没有提到的名词:
1、local-name();例子:,这里所表达的意思就是当前节点的名字。
2、...,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的人,如果按字面理解我们可以写成...,但是这样写在预览xml的时候就会报错,我也想用条件里面套条件这样的写法,也不符合语法,查了很多相关的资料,没有找到很好的解决办法。
以上是在学习和使用xslt对xml进行解析的过程中的一些感想和记录,xslt很强大,有很多功能都没有涉及,当然,我还要继续学习和研究,更多精彩内容,尽在https://js.VeVb.com。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美在线激情视频| 国产精品久久久久久久天堂| 欧美华人在线视频| 亚洲黄色在线观看| 欧美理论在线观看| 欧美激情免费看| 欧美一区二区三区艳史| 亚洲精品小视频在线观看| 中文字幕视频一区二区在线有码| 成人免费大片黄在线播放| 色一情一乱一区二区| 亲爱的老师9免费观看全集电视剧| 亚洲片在线资源| 久久久av电影| 日韩av免费在线观看| 欧美成人免费播放| 日韩精品福利网站| 欧美在线www| 久久亚洲精品中文字幕冲田杏梨| 91sa在线看| 国产精品旅馆在线| 日韩av不卡在线| 日韩精品免费电影| 日韩电影第一页| 中文字幕精品在线视频| 91精品久久久久久| 亚洲无限av看| 国外视频精品毛片| 亚洲欧洲在线看| 午夜精品久久久久久久99黑人| 精品亚洲一区二区三区| 午夜精品久久久久久久99热浪潮| 欧美激情三级免费| 日韩欧美国产视频| 日韩亚洲国产中文字幕| 国产亚洲成精品久久| 精品欧美国产一区二区三区| 福利一区福利二区微拍刺激| 成人情趣片在线观看免费| 亚洲美女又黄又爽在线观看| 欧美午夜久久久| 国产成人精彩在线视频九色| 中文字幕亚洲无线码a| 91久久国产婷婷一区二区| 欧美激情手机在线视频| 91影视免费在线观看| 亚洲欧洲在线观看| 91视频国产一区| 国产丝袜精品视频| 国产成人一区二区在线| 亚洲人成电影网站色www| 亚洲精品有码在线| 欧美日韩成人在线播放| 国产精品在线看| 欧美黄色片免费观看| 国产亚洲a∨片在线观看| 国产精品久久久久av免费| 亚洲国产精品福利| 欧美激情视频网| 欧美裸身视频免费观看| 一本色道久久88亚洲综合88| 亚洲午夜精品视频| 久久影院资源网| 富二代精品短视频| 亚洲欧美日本精品| 欧美激情性做爰免费视频| 久久天天躁夜夜躁狠狠躁2022| 精品国内自产拍在线观看| 欧洲亚洲在线视频| 国产精品男女猛烈高潮激情| 欧美精品18videos性欧美| 怡红院精品视频| 亚洲一级一级97网| 成人欧美在线视频| 欧美在线一区二区三区四| 久久成人18免费网站| 亚洲激情中文字幕| 成人免费网站在线观看| 26uuu亚洲国产精品| 欧美视频中文字幕在线| 中文字幕日韩精品在线| 国产精品久久999| 高潮白浆女日韩av免费看| 国产精品伦子伦免费视频| 亚洲国产精品yw在线观看| 国内精品久久久久久中文字幕| 国产91网红主播在线观看| 日韩成人中文字幕在线观看| 亚洲va电影大全| 亚洲视频精品在线| 欧美成人国产va精品日本一级| 永久免费看mv网站入口亚洲| 国产一区二区三区在线观看视频| 欧美特级www| xx视频.9999.com| 日韩av免费看| 欧美成人高清视频| 91视频-88av| 亚洲毛茸茸少妇高潮呻吟| 久久久久久久久久国产| 97视频色精品| 欧美一级视频在线观看| 亚洲老司机av| 日韩av成人在线| 国产欧美一区二区三区久久| 国产精品日韩一区| 久久精品中文字幕免费mv| 日韩精品久久久久久久玫瑰园| 欧美在线视频一区二区| 亚洲欧洲在线播放| 欧美激情在线有限公司| 这里只有精品在线播放| 97视频在线观看免费高清完整版在线观看| 亚洲美女在线视频| 亚洲电影免费观看| 日本视频久久久| 国产美女主播一区| 韩国19禁主播vip福利视频| 国产精品视频午夜| 亚洲欧美另类自拍| 亚洲欧美国产日韩天堂区| 亚洲一级免费视频| 国产精品久久久久久久久久三级| 岛国av在线不卡| 亚洲精品日韩激情在线电影| 欧美性猛交xxxx乱大交极品| 欧美大片在线免费观看| 国产亚洲欧洲黄色| 欧美性理论片在线观看片免费| 亚洲九九九在线观看| 91禁外国网站| 91精品免费视频| 国产精品视频免费在线| 欧美片一区二区三区| 精品久久久久久久久久ntr影视| 国产色综合天天综合网| 91丝袜美腿美女视频网站| 日韩在线视频网站| 成人免费观看网址| 亚洲精品黄网在线观看| 在线观看视频99| 国产精品久久久久久久久久久久久久| 久久中文字幕在线| 国产成人鲁鲁免费视频a| 欧美成人在线免费| 久久6精品影院| 亚洲成年人在线播放| 欧美成人免费全部观看天天性色| 国产一区香蕉久久| 国产97在线观看| 国产成人免费av电影| 日韩中文综合网| 成人国内精品久久久久一区| 日本久久中文字幕| 久久亚洲国产精品| 日韩中文字幕视频在线观看| 日韩亚洲成人av在线| 欧美日韩日本国产| 亚洲午夜小视频| 久久91亚洲精品中文字幕奶水| www.欧美精品| 麻豆国产va免费精品高清在线| 伊人久久精品视频| 国产精品美女在线|