12下一页
返回列表 发新帖

在xslt样式表中声明命名空间小结

376.9k 14
swmozowtfl 发表于 2015-7-10 22:28:00|湖北 | 查看全部 阅读模式
考虑以下两段代码: 4 G$ d: ~) C$ _
代码如下:3 @, C7 \# ^$ C
<urlset>
5 A6 G( S/ r% n8 x8 n* e9 X<url>
$ }+ O, x! ~5 Q( a! e$ I<loc>http://www.caixw.com/archives/1.html</loc> 5 X9 Q- y/ D2 L4 R5 L& V- Z
<lastmod>2010-05-20t16:30:59+08:00</lastmod>
4 K* O+ S3 J6 z0 G9 M</url>
/ I) r% W; Z( j: T) @" [<url> & O" H2 ^! r. I$ ^! N
<loc>http://www.caixw.com/archives/2.html</loc>
  p* x2 v. `$ }$ T' p1 h/ o% w/ Q<lastmod>2010-05-20t16:35:59+08:00</lastmod> 9 b! L, k" h; V8 {0 b
</url>
2 T$ A& u7 k1 s- }. u3 S: @</urlset>
# F( P8 }. Z% V' R( i$ X这是一段标准的sitemap文件,当然为简单点,我把url的两个子节点去掉了,但总体上不影响我们使用。  F1 W( r, s6 f5 V* d' V
代码如下:
$ {  S( m+ z$ z- @; i5 N* O
<xsl:stylesheet version=1.0 xmlns:xsl=>
: o3 G  ?$ l& I5 y! o  X<xsl:output method=html encoding=utf-8 indent=yes version=1.0 />
5 w5 [: U' A3 p* q, @<xsl:template match=/ xmlns:sm=>
! X, @/ |9 h' q* E0 h  Z$ L<html>
! L0 v+ o  w8 ]<head>
. U' ^+ G* k3 F, s+ c, J* R& q<title>xml sitemap</title>
' U- D5 s) G# c  r2 o# E</head> 0 W, I; ^. |; B. y
<body> " q: v1 o: B3 b3 T8 E4 d: ^1 K
<xsl:apply-templates select=urlset />
8 W# P' O2 J! J</body>
% y  C. p: v  n! f, \</html> : j% z( C* b/ ^3 n
</xsl:template>
7 t6 y% m7 J8 Q* e- U$ d8 u<xsl:template match=urlset> ; C9 X( `4 x% c0 C9 E: s" b& C
<table> - {- P" X# l5 L
<xsl:for-each select=url> % W0 u: u  a5 o4 {. C+ T
<tr> + T" D% U$ Z" [
<td><a>
- }: J+ d, b4 X8 U<xsl:attribute name=href><xsl:value-of select=loc /></xsl:attribute>
: G1 L$ m+ J5 E) M2 X<xsl:value-of select=loc />
3 h! X7 h1 |% x) f5 H0 P</a></td>
5 h8 ^  V: r# Q<td><xsl:value-of select=substring-before(lastmod, 't') /></td> 3 y/ P. H1 U. r
</tr>
2 E4 j; z7 d' _5 U2 \</xsl:for-each> . }5 S/ u; D/ q& G
</table> 7 i) p; q1 W( f
</xsl:template>
7 I! P! Z0 C  c1 L</xsl:stylesheet>
$ C$ _$ ~" L8 {3 Q) U  V这是一段转换sitemap的代码,再次偷懒,把输出的表格的内容给过滤掉了一部分。要完整版的看本站右下角的sitemap文件。
. B8 M* r  _- d! ?5 c以上这两段代码能够正确的进行转换,没有什么问题。现在我们给xml文件加上一个命名空间(事实上现在大部分xml文件都存在这样那样的命名空间,sitemap也不例外):
$ e* {! {3 J& C7 ]6 j9 ?4 w代码如下:( H9 k! `0 I% E) f/ ]$ Q) ^. z) U
<urlset xmlns=> 1 K9 P6 U3 u* f- B
<url>
8 q, ]- }& x/ j+ w' S0 }& g% e  J<!-- ... -->
' f( ?) o2 y2 c9 ?</url>   N$ W7 [- l' Q- \! j2 n
</urlset> 5 s( W5 c3 \' v+ i: b3 y
ok,现在应该不能正确转换了,body部分变成空的了。很明显无法匹配urlset节点了。因为现在所有sitemap文件下的节点都是带命名空间的,不能再这样直接使用了。都要带上命名空间前缀才能正确匹配。 . P( r1 \9 @5 s8 L2 Z! g
当然,要使用命名空间,首先要声明它。在xsl:stylesheet标签中再声明一个命名空间: . P% H! F  m( h/ D: e3 _
代码如下:5 d( H1 M* ]; J8 h+ ~
<xsl:stylesheet version=1.0 xmlns:xsl= xmlns:sitemap=> 8 t* {! I6 n6 q6 z# V+ C
然后在所有原先匹配xml文件节点的都加上sitemap前缀:
: f- K# L2 ~8 \0 o& }<td><xsl:value-of select=substring-before(sitemap:lastmod, 't') /> # J" E5 G9 m& W8 j# [7 F7 a
" u6 N% b" k" @- y
更多网页制作信息请查看: 网页制作

回复|共 14 个

buingeEvineus 发表于 2015-11-27 19:25:05|山东 | 查看全部
现在做什么网站好?
tohme 发表于 2015-11-27 19:25:12|日本 | 查看全部
说嘛1~~~想说什么就说什么嘛~~
alapScady 发表于 2015-11-27 19:24:25|中国 | 查看全部
什么?????不知道......
gevaemaidovef 发表于 2015-11-27 19:25:00|北美地区 | 查看全部
我怎么就踩不死你呢??
gevaemaidovef 发表于 2015-11-27 19:25:28|Reserved | 查看全部
嘿嘿...没事我才不骂人呢...
mwxny 发表于 2016-1-17 14:42:22|北美地区 | 查看全部
出来混 迟早都是要灌的——不灌水怎么混啊
effoggikeftor 发表于 2016-1-17 14:42:04|美国 | 查看全部
(⊙o⊙)…好长啊,我虽然回复不了那么多字,但十五字还是有的。
alapScady 发表于 2016-1-17 14:42:31|Reserved | 查看全部
哈哈~~~相比现在没人在了 吧 哈哈~~~~
Acropozelan 发表于 2016-1-17 14:41:31|INNA | 查看全部
明天我给发过来
gevaemaidovef 发表于 2016-1-17 14:41:28|乌克兰 | 查看全部
今天没事来逛逛
gevaemaidovef 发表于 2017-4-11 15:47:28|Reserved | 查看全部
本人是文盲,以上内容文字均不认识,也看不懂是什么意思.
bqtklouu 发表于 2017-4-11 15:46:37|欧洲 | 查看全部
晕倒`````不要造我的谣言哦~~小心我打你pp~~嘿嘿~~~~
buingeEvineus 发表于 2017-4-11 15:53:12|Reserved | 查看全部
教教我怎么seo
GoodyFouppy 发表于 2017-4-11 15:49:44|日本 | 查看全部
看起来好~~像啊~~~~~

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

得知互动是一个融创意、设计、开发、营销、生活、互联网于一体的专业交流分享平台。
Copyright © 2026 站长技术交流论坛|互联网技术交流平台|Ai技术交流平台 版权所有 All Rights Reserved. Powered by Discuz! X5.0 鄂ICP备15006301号-5|鄂公网安备 42018502006730号
关灯 在本版发帖 扫一扫添加QQ客服 返回顶部
快速回复 返回顶部 返回列表