12下一页
返回列表 发新帖

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

376.9k 14
swmozowtfl 发表于 2015-7-10 22:28:00|湖北 | 查看全部 阅读模式
考虑以下两段代码:
  ~& K, R! a1 A5 {3 p$ L代码如下:
! ^6 I6 Q9 K* ?" x3 t
<urlset>
0 f7 f2 W" X8 C0 M  `<url>
3 y. m; ?) t6 U# a! r/ Q<loc>http://www.caixw.com/archives/1.html</loc> 4 D7 e& a: B) }8 I0 F
<lastmod>2010-05-20t16:30:59+08:00</lastmod> " e' e! }, J. B" Y
</url>
, H$ V1 D* Q& B+ n$ y7 @<url>
8 A7 ^+ c1 k- B/ ?) W<loc>http://www.caixw.com/archives/2.html</loc>
) K* L2 b, M% I) a0 |, ]<lastmod>2010-05-20t16:35:59+08:00</lastmod>
8 U9 u+ B3 F: J0 e0 S1 d: l/ L</url>
3 s  y+ O# L6 B</urlset>
! R# A8 J: Q3 X1 _* M" Y+ V这是一段标准的sitemap文件,当然为简单点,我把url的两个子节点去掉了,但总体上不影响我们使用。
4 W4 Y/ y1 w. x- O' ^. ?+ _; i3 t* y) K代码如下:+ i4 g" b# k3 }! O6 k
<xsl:stylesheet version=1.0 xmlns:xsl=> 2 e% |5 K( J( @3 t* J( H) a
<xsl:output method=html encoding=utf-8 indent=yes version=1.0 /> % o- `5 H  I. V. I9 ~" s7 E
<xsl:template match=/ xmlns:sm=> : d4 S% ^! g2 Z. D1 r; x
<html>
) ]; W5 D! h% t  r, u+ R; W<head>
+ D6 B- Z1 K3 ~$ p+ K: p<title>xml sitemap</title> " M$ r" D$ z% ]# i
</head>
2 S: u+ d! P. \, f<body> ; K$ A1 e5 e6 q9 q& r# y6 p( ^9 Z) ~
<xsl:apply-templates select=urlset /> : c6 k% ?- g1 E' b" w) E. ^
</body>
! G  G; v" R2 Y9 U) P+ a* u2 D</html> # @- A0 F; D# z
</xsl:template>
' }- r/ i" \' g" K2 C% g) u, B5 C% a<xsl:template match=urlset> - n! M/ Z+ t  V+ _6 W$ `
<table>
3 L# y: s" [* V0 B+ H<xsl:for-each select=url>
; M+ Z0 B9 y' T5 x* X8 E7 n! `5 m<tr> 7 I: u9 H1 @2 T- B+ n4 F
<td><a> ! e) h3 Z8 ?* Y6 O4 O' q
<xsl:attribute name=href><xsl:value-of select=loc /></xsl:attribute> & \9 g0 P7 ^0 U/ y/ k& v
<xsl:value-of select=loc />   y6 q6 }; A& z
</a></td> + L; \- }) w+ \, f. R! ~5 U9 [
<td><xsl:value-of select=substring-before(lastmod, 't') /></td>
4 {% a( q% g8 Z  ]0 P' P</tr> # o' k8 _0 x1 h0 ~
</xsl:for-each> / ]! O4 u: M2 X' J/ _
</table> ! K( ?& S, d/ T& h/ P: {
</xsl:template> 0 S( O& q1 ?  H8 A
</xsl:stylesheet>
6 M$ @3 ^3 J' `2 R1 r' x这是一段转换sitemap的代码,再次偷懒,把输出的表格的内容给过滤掉了一部分。要完整版的看本站右下角的sitemap文件。
1 m4 M" y- T" |" v5 w$ R; c$ n以上这两段代码能够正确的进行转换,没有什么问题。现在我们给xml文件加上一个命名空间(事实上现在大部分xml文件都存在这样那样的命名空间,sitemap也不例外): & a" R, }, R3 n+ `& P) f
代码如下:
$ Z0 _+ ^- Y) S$ |5 B4 H0 D
<urlset xmlns=> 6 o" u7 F1 X9 M, W  F
<url> - _0 |( R" F5 [( {+ a
<!-- ... --> 8 t9 V. z: J: G* H. \
</url> , v7 K/ i  C9 v8 D2 V
</urlset>
4 }* `- m6 _" g6 c1 b, Fok,现在应该不能正确转换了,body部分变成空的了。很明显无法匹配urlset节点了。因为现在所有sitemap文件下的节点都是带命名空间的,不能再这样直接使用了。都要带上命名空间前缀才能正确匹配。 ' ~+ s# J. s# s
当然,要使用命名空间,首先要声明它。在xsl:stylesheet标签中再声明一个命名空间: + @  c$ v( _+ K- D; h4 n
代码如下:# d0 w6 X, M4 ~$ D. r
<xsl:stylesheet version=1.0 xmlns:xsl= xmlns:sitemap=>
7 ^1 P5 g, n0 v  `7 m& T( k0 L然后在所有原先匹配xml文件节点的都加上sitemap前缀: ( e' M; d5 c, h
<td><xsl:value-of select=substring-before(sitemap:lastmod, 't') /> 0 Y/ i8 l8 C' O2 p0 h
! r" r7 x4 S8 N5 E1 P4 `2 l* m! G
更多网页制作信息请查看: 网页制作

回复|共 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客服 返回顶部
快速回复 返回顶部 返回列表