12下一页
返回列表 发新帖

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

377.0k 14
swmozowtfl 发表于 2015-7-10 22:28:00|湖北 | 查看全部 阅读模式
考虑以下两段代码: : p3 j' v% ~5 M: a$ g
代码如下:" u# A7 b& v* z
<urlset>
: s. u0 U( Y9 `7 T' Z<url> & F$ C$ z; X  Y( ~, z5 F
<loc>http://www.caixw.com/archives/1.html</loc> 1 f) o; C; w% s. I8 T* k
<lastmod>2010-05-20t16:30:59+08:00</lastmod>
6 }% L& O9 [9 I6 y& @$ s% R8 A</url>
8 a& T: Z8 F/ o' t<url>
* j8 L' \- v! D+ z. f<loc>http://www.caixw.com/archives/2.html</loc>
  |( d- z) g- b. S8 Y<lastmod>2010-05-20t16:35:59+08:00</lastmod> . n1 h. X. Y" @6 c  p
</url>
# ?0 h1 a& n& e  C3 j( ^& J</urlset> 5 Q9 z8 F7 E+ I1 s3 j6 V5 t
这是一段标准的sitemap文件,当然为简单点,我把url的两个子节点去掉了,但总体上不影响我们使用。/ s7 X+ ]% s* h2 A' C
代码如下:
7 \. ]$ l% U$ w4 W$ t7 b4 L8 S
<xsl:stylesheet version=1.0 xmlns:xsl=>
" O+ P1 k" a* I- `1 v4 C1 Z* `<xsl:output method=html encoding=utf-8 indent=yes version=1.0 /> + y  B0 F3 G& s/ ^2 }
<xsl:template match=/ xmlns:sm=> 4 r' `% K  p) |$ r5 h
<html>
9 C2 j* A0 B; j, d  S, |' l<head>
0 w# u2 \% Y/ N4 `0 D9 u4 \<title>xml sitemap</title> 3 r$ ?% E$ f8 m, @
</head> ! g- J* c8 [' V8 x8 ]# W
<body> 1 I6 \& x# `, q" ^. [
<xsl:apply-templates select=urlset />
6 f, ~' t$ r$ D" t$ L4 f</body> 2 \, m( M( E5 g3 W$ k) A
</html> ) t) i, s9 c: B8 E! {9 K% r$ a  |; k7 i
</xsl:template>
" s2 ?+ V9 K7 j$ B% O<xsl:template match=urlset> / L0 w1 |1 H! k$ k+ S! V# |; b$ l
<table> 5 y5 T6 y, R# J
<xsl:for-each select=url>
0 s! v# Y9 v3 R6 M<tr> 0 y* Q7 w. s! _: \* t
<td><a>
  ]* h/ a- G" N: d  u<xsl:attribute name=href><xsl:value-of select=loc /></xsl:attribute>
. `# k+ P+ E+ W0 n% f! Q<xsl:value-of select=loc /> " F6 R, W3 p% a: [2 V, J9 h
</a></td>
) x1 _7 a; z2 \% d: ^<td><xsl:value-of select=substring-before(lastmod, 't') /></td>
2 o$ h' L) J5 D3 K5 s& D+ _- |- u</tr>
" H, `- H5 }# e" I* B+ Q</xsl:for-each>
$ f1 o1 Y) y' d- O& q; G4 W1 {</table> 5 m6 Z4 }, ^( B" K
</xsl:template>
7 s2 ~# w' ^, a! \# q9 o</xsl:stylesheet>
! G7 x5 A. l2 P( t, O* u4 w) F这是一段转换sitemap的代码,再次偷懒,把输出的表格的内容给过滤掉了一部分。要完整版的看本站右下角的sitemap文件。 % }9 V3 j* [4 q0 F' l1 K5 S$ d9 g
以上这两段代码能够正确的进行转换,没有什么问题。现在我们给xml文件加上一个命名空间(事实上现在大部分xml文件都存在这样那样的命名空间,sitemap也不例外):
& D5 ?2 ]* J& t* O代码如下:8 T3 M0 D. V2 m; e6 ~0 W7 `) p- Q# v) r
<urlset xmlns=> , w0 O$ ?& V9 Q
<url> " d4 h7 K5 `' z1 a" d
<!-- ... --> ' i* i/ l% k: E# j. P: ?
</url>
7 u( a* Z9 @7 `+ i* R% O</urlset> ( v9 H' O, Y+ F; r
ok,现在应该不能正确转换了,body部分变成空的了。很明显无法匹配urlset节点了。因为现在所有sitemap文件下的节点都是带命名空间的,不能再这样直接使用了。都要带上命名空间前缀才能正确匹配。
4 |* W  L% g7 T- I当然,要使用命名空间,首先要声明它。在xsl:stylesheet标签中再声明一个命名空间: . i; N. r- r' l& B& x. W; i% W+ w8 F1 R
代码如下:+ z3 x7 x* J3 g$ s7 I$ c, K
<xsl:stylesheet version=1.0 xmlns:xsl= xmlns:sitemap=> - `7 @& ^: v& k- ~3 X
然后在所有原先匹配xml文件节点的都加上sitemap前缀:
1 W1 J- w, P7 G8 |1 s. D<td><xsl:value-of select=substring-before(sitemap:lastmod, 't') />
7 `( n$ \7 d1 K) [4 P$ y5 |
9 o; \2 r( n) ~更多网页制作信息请查看: 网页制作

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