12下一页
返回列表 发新帖

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

377.6k 14
swmozowtfl 发表于 2015-7-10 22:28:00|湖北 | 查看全部 阅读模式
考虑以下两段代码:
( `; |/ y) z9 R5 q3 {代码如下:
5 u1 a# B! e% K! N; O& C5 k
<urlset> / l$ P  ~( I6 P1 t3 Y5 i: V8 B
<url> 3 o$ R* i" l  B
<loc>http://www.caixw.com/archives/1.html</loc>
" ~( ]1 b- m. X3 A<lastmod>2010-05-20t16:30:59+08:00</lastmod> , @/ B; C( `0 i8 l' a) v
</url>
' g4 y' b/ A1 c7 i+ d2 f<url> " G5 V/ J" [5 [
<loc>http://www.caixw.com/archives/2.html</loc>
& Y4 g( r7 ]; {+ B7 _9 v: u0 N& Z1 o<lastmod>2010-05-20t16:35:59+08:00</lastmod>
+ d: L, x! {+ T$ D8 x% x$ z3 f</url> 7 r( k3 S3 z- s- q7 D: w( }
</urlset> ( ^  K' N$ L) \3 f
这是一段标准的sitemap文件,当然为简单点,我把url的两个子节点去掉了,但总体上不影响我们使用。  _8 f2 o1 |' {, D9 f
代码如下:
8 t$ w' O5 J7 N3 i; }0 _* x
<xsl:stylesheet version=1.0 xmlns:xsl=>
3 x% w; h! G2 R; A4 m, X* x* {, S# _1 ?<xsl:output method=html encoding=utf-8 indent=yes version=1.0 />
& h0 J* ^$ @3 ]6 t' j<xsl:template match=/ xmlns:sm=> 3 e3 [6 Z! V8 ^- {
<html>
% W+ w  m  C$ D$ F<head> ) a6 U7 J" t, k) t1 l- _) g
<title>xml sitemap</title> 5 I/ s; |: u1 p" X
</head> # v4 H, ^: ^9 ^6 r5 }
<body>
) e* k  \1 }5 a+ U' a9 q$ r$ W<xsl:apply-templates select=urlset />
- G4 ~+ Z5 T/ R, v; _</body>
- e& U- I4 @4 V# h4 z</html> ; U; m) ?, }" q4 Z$ s; ?* t
</xsl:template>
8 z* y3 j7 m0 p8 s' {<xsl:template match=urlset>
  z# w" @2 i6 H# g# L<table>
  O2 t: @; @6 L5 r9 p6 ~. w- s<xsl:for-each select=url>
7 z) @& Q7 i( ?$ Q6 C<tr>
( E1 t. k2 o* Q# e4 ?<td><a> ) ~" u  y: q8 M) L7 `/ |6 C. a- Q
<xsl:attribute name=href><xsl:value-of select=loc /></xsl:attribute> % R. o, Z! C; {% O
<xsl:value-of select=loc />
# {" b) M: r- e6 R4 `4 F; X</a></td>
% p1 H4 |( f) H  F  R3 ~6 O<td><xsl:value-of select=substring-before(lastmod, 't') /></td> , C7 w7 T: t. t5 E7 p" Z
</tr>
. O0 i" K) r; T& x9 Z. ?4 u' L1 h7 M" E</xsl:for-each>
0 u0 t( p3 m# z* q</table> ' ~, H: x3 w0 ~* l
</xsl:template> 2 v" `4 n) _8 x& v* }' l: R
</xsl:stylesheet>
9 Z) h9 t8 \( ~) m这是一段转换sitemap的代码,再次偷懒,把输出的表格的内容给过滤掉了一部分。要完整版的看本站右下角的sitemap文件。
6 X9 q3 ?4 ?7 S/ j; F  r3 H) p以上这两段代码能够正确的进行转换,没有什么问题。现在我们给xml文件加上一个命名空间(事实上现在大部分xml文件都存在这样那样的命名空间,sitemap也不例外): 1 U6 K# o: v% ?& m5 i% ]( p9 R
代码如下:
( _; n8 L. @6 U* Q1 N- d3 Y
<urlset xmlns=>
. f7 X! ?. {' M) l<url>
  V+ \; O1 o: \% Q- f5 k<!-- ... --> 9 l. P4 Z9 y* Y1 }2 w0 f3 e5 R% }
</url> " y( b% `: L, U7 T8 `
</urlset> 1 p5 `: P( y" r
ok,现在应该不能正确转换了,body部分变成空的了。很明显无法匹配urlset节点了。因为现在所有sitemap文件下的节点都是带命名空间的,不能再这样直接使用了。都要带上命名空间前缀才能正确匹配。
; Q2 E8 l% g. \' w! R7 z2 M当然,要使用命名空间,首先要声明它。在xsl:stylesheet标签中再声明一个命名空间: ) F. R5 S7 i; J2 j  n
代码如下:
" t6 X- Z! g7 z/ L% q$ w, J
<xsl:stylesheet version=1.0 xmlns:xsl= xmlns:sitemap=> & i% _7 G9 q2 U0 b* C* X! c, ^" J
然后在所有原先匹配xml文件节点的都加上sitemap前缀:
; C4 W; B. C8 b2 w1 m4 u, @% C7 u$ z' F8 L<td><xsl:value-of select=substring-before(sitemap:lastmod, 't') /> + \  {" c& D# m* I5 @/ w

" h! [7 e5 Q) N- H; `0 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客服 返回顶部
快速回复 返回顶部 返回列表