12下一页
返回列表 发新帖

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

377.5k 14
swmozowtfl 发表于 2015-7-10 22:28:00|湖北 | 查看全部 阅读模式
考虑以下两段代码:
4 d! a; A  }1 X' t/ w. R代码如下:/ Z6 U. Y, x' k1 X
<urlset>
* R* ~2 V9 k. C6 y0 q<url> & l' l0 y* C: Y/ Q
<loc>http://www.caixw.com/archives/1.html</loc>
. D; Q3 L* ?+ g  o- T* y, I<lastmod>2010-05-20t16:30:59+08:00</lastmod>
) f5 {; U( E" }- ]4 X1 Z4 d  Z; G</url> 0 L8 u: z! D) r  r! a' j3 e) O
<url> 2 W9 t  h1 `- g* H4 E4 E! \
<loc>http://www.caixw.com/archives/2.html</loc> " ~. {1 n  t9 [  R
<lastmod>2010-05-20t16:35:59+08:00</lastmod> 5 A$ X# U# z4 e# q" a; A
</url>
  _/ \  T  {& h2 @$ i  }</urlset>
$ @; m. T  I! s2 G$ V( N; ^, L8 r8 p这是一段标准的sitemap文件,当然为简单点,我把url的两个子节点去掉了,但总体上不影响我们使用。
7 I7 ?, l* {8 ?+ R. p8 W! @( [代码如下:5 ?- v( r+ R( T3 k
<xsl:stylesheet version=1.0 xmlns:xsl=> + c0 Z3 @/ r( B# c
<xsl:output method=html encoding=utf-8 indent=yes version=1.0 />
0 e( B- C2 F6 k6 H' D3 e<xsl:template match=/ xmlns:sm=> 9 u: u4 \& u0 Y6 D  l2 O0 Q% E
<html>
6 P0 h+ \4 t" m<head> - \2 B* G$ V% @$ m, A3 p
<title>xml sitemap</title> ) ]5 i6 }3 M1 E2 N/ P! |$ I4 f& k; m
</head> 7 a) h5 _5 \0 o
<body>
+ r9 P: C! k! Q9 D; `+ Z, l<xsl:apply-templates select=urlset /> ( m% U4 D# w3 i6 ~
</body> 2 i* c  L$ o# c$ @! F+ l: y
</html> # d3 h) Y" u* x9 T! Y" G2 K
</xsl:template>
, K* O; i( v8 m<xsl:template match=urlset> 5 U( q; \. v. Q8 [4 e
<table> & y& R$ ]' ]1 i$ K, r% b
<xsl:for-each select=url> 4 Q% G; F4 F' k# q" J: `
<tr>
" i$ c+ Z* R- n8 U7 H<td><a>
8 i6 f& e- u5 M) u3 w+ t( _) B<xsl:attribute name=href><xsl:value-of select=loc /></xsl:attribute>
* @% Q' u" M! `1 F<xsl:value-of select=loc />
) N- Z0 Y. T/ u2 z1 m( R  ]& _</a></td>   ~* F7 |% D: v) u
<td><xsl:value-of select=substring-before(lastmod, 't') /></td>
  D% `: @$ C/ b2 S9 g</tr> ! Q( i. C- Q, l3 o
</xsl:for-each> , W( j" X. [' K) g$ ]
</table>
+ e+ s) i: W3 q4 ^8 {9 @* A5 M</xsl:template> - S4 |# g. p4 m1 M
</xsl:stylesheet> / y( l6 e, ?$ C$ h
这是一段转换sitemap的代码,再次偷懒,把输出的表格的内容给过滤掉了一部分。要完整版的看本站右下角的sitemap文件。 4 l/ e9 L+ J: d+ ^2 ]9 t
以上这两段代码能够正确的进行转换,没有什么问题。现在我们给xml文件加上一个命名空间(事实上现在大部分xml文件都存在这样那样的命名空间,sitemap也不例外):
0 ^3 i" @) I5 A1 c0 N6 d代码如下:
* o# w7 V! y; t7 a9 T/ D
<urlset xmlns=>
2 p& r. n4 B( y- ^<url>
* a; Z6 c( {6 O% I0 \& }<!-- ... --> ! a9 ~" U1 f" Z( ?! x( g" D
</url> - e# ]3 @% a9 P1 `6 @* J
</urlset> & D1 G1 X3 m) _6 }( f& u# {' {
ok,现在应该不能正确转换了,body部分变成空的了。很明显无法匹配urlset节点了。因为现在所有sitemap文件下的节点都是带命名空间的,不能再这样直接使用了。都要带上命名空间前缀才能正确匹配。
' i8 e0 Z* T! Q" l' _当然,要使用命名空间,首先要声明它。在xsl:stylesheet标签中再声明一个命名空间: ' |3 M/ W* n9 h" w% U; k) {, d
代码如下:, M& q8 b2 r1 Q9 d  G, F7 X# o
<xsl:stylesheet version=1.0 xmlns:xsl= xmlns:sitemap=>
) q; q2 o  Q# [; s9 t% W9 J然后在所有原先匹配xml文件节点的都加上sitemap前缀:
1 b9 ^( M' v6 n- k& e. ?7 ~<td><xsl:value-of select=substring-before(sitemap:lastmod, 't') />
  A* r- A3 |8 m& z. L- q
6 k. x: H8 \6 R& 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与站长技术交流社区-Ai交流平台 版权所有 All Rights Reserved. Powered by Discuz! X5.0 鄂ICP备15006301号-5|鄂公网安备 42018502006730号
关灯 在本版发帖 扫一扫添加QQ客服 返回顶部
快速回复 返回顶部 返回列表