12下一页
返回列表 发新帖

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

377.5k 14
swmozowtfl 发表于 2015-7-10 22:28:00|湖北 | 查看全部 阅读模式
考虑以下两段代码:
# H: Z# h+ Z, ^代码如下:
# |1 b+ L$ R) O6 w. I) V+ I" ?
<urlset> # ^7 a3 V9 Q- y1 e5 A. V
<url>
. C6 [# w! [) _! y2 y<loc>http://www.caixw.com/archives/1.html</loc>
: H  g) ^0 A# e0 q. k3 ?<lastmod>2010-05-20t16:30:59+08:00</lastmod> / S: r- O8 o- {. l" J6 T
</url> ( N0 l- f+ l5 |" G2 `" ^0 i  t8 ]0 A
<url> ! B7 F  i1 p7 P& v3 ]/ Q) u4 n
<loc>http://www.caixw.com/archives/2.html</loc> " l" @3 n- w* T
<lastmod>2010-05-20t16:35:59+08:00</lastmod> , S  ]; K' h& O/ t2 F
</url> 1 g8 b: n+ Y) O% a+ U$ d
</urlset>
7 a9 \5 Q) A0 S4 p  s; g这是一段标准的sitemap文件,当然为简单点,我把url的两个子节点去掉了,但总体上不影响我们使用。
, {$ S" H+ w( a# g) K代码如下:
8 b, u5 U; r  ?0 W* ]6 O
<xsl:stylesheet version=1.0 xmlns:xsl=> 2 @# y; h/ e/ t' x/ O- C
<xsl:output method=html encoding=utf-8 indent=yes version=1.0 />
8 J* D0 c. ]6 R<xsl:template match=/ xmlns:sm=>
7 B; e. M+ ~- C& A9 |% D/ q<html>
: n4 @5 ]$ T, n8 ^4 u5 r6 H4 W( H<head>
( w  ]; Q/ k3 k5 ?4 G! \7 |. v<title>xml sitemap</title>
" b& f* Y: \1 `$ l. ]</head>
& C' ?9 M. J; N<body>
0 `: c2 E/ R9 f7 e8 l7 [<xsl:apply-templates select=urlset /> / g+ P9 Z( B) I( [; ^1 _  d
</body>
1 q/ V5 z; D& W9 d</html> . q- U! }5 I) n/ z
</xsl:template> : S+ C+ q! b% z9 @( U
<xsl:template match=urlset> 2 ]; b$ G" o  |. Q5 {% ^! i/ \
<table> 1 {& K- n- X6 C. a) t
<xsl:for-each select=url>
0 ?" o- ?9 U' g# T% X<tr>
$ w: z9 F; `! s. |2 m: G" h8 \& E9 H7 P<td><a> , s' Z4 Z( P" Y! }& ^- V' n3 Z
<xsl:attribute name=href><xsl:value-of select=loc /></xsl:attribute> & g" X# h; r4 q2 K8 ]5 J( b6 k/ d
<xsl:value-of select=loc />   `7 w- L1 x$ {
</a></td>
% c1 l' ^# c' M/ p2 L$ v- G) b<td><xsl:value-of select=substring-before(lastmod, 't') /></td>
; j( ]) ~4 `" Z% T' G</tr> . V- D9 W5 E$ X" `- ?5 e% K
</xsl:for-each> 2 T* Z5 J4 n  {
</table> & p( @& A. ~0 E# H
</xsl:template> 1 e, p% C) E5 a9 d; S4 V
</xsl:stylesheet> , O6 D9 e# y; E% M- ]: M
这是一段转换sitemap的代码,再次偷懒,把输出的表格的内容给过滤掉了一部分。要完整版的看本站右下角的sitemap文件。
" P4 D0 g% Q' ^以上这两段代码能够正确的进行转换,没有什么问题。现在我们给xml文件加上一个命名空间(事实上现在大部分xml文件都存在这样那样的命名空间,sitemap也不例外): 4 ^" W7 F% l2 z* V$ L
代码如下:
: s3 x$ x9 E0 I1 e9 Z+ _# X
<urlset xmlns=> 0 y. e; e+ f# i1 B7 s: m
<url> 9 H, `5 R$ l2 L' Q- l
<!-- ... --> ( t. `( L1 S; @( g3 f$ P: D
</url> & W0 N1 O: \/ Q
</urlset> - k9 p& h2 \6 ^+ C! k) f
ok,现在应该不能正确转换了,body部分变成空的了。很明显无法匹配urlset节点了。因为现在所有sitemap文件下的节点都是带命名空间的,不能再这样直接使用了。都要带上命名空间前缀才能正确匹配。
" D% i% ?# s. F' v% D8 ?% `当然,要使用命名空间,首先要声明它。在xsl:stylesheet标签中再声明一个命名空间:
. U  F  a6 a4 H  O/ O% f6 L% c; d; {代码如下:6 Q1 i% p! i+ I/ O; w
<xsl:stylesheet version=1.0 xmlns:xsl= xmlns:sitemap=>
: i/ E! b) f* P# C然后在所有原先匹配xml文件节点的都加上sitemap前缀: 5 p* V& x; s4 D7 V
<td><xsl:value-of select=substring-before(sitemap:lastmod, 't') /> 7 ]7 g* S5 H; \+ v7 f  ?
; U% h" n/ a# S4 S* g  H, f& q' i
更多网页制作信息请查看: 网页制作

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