12下一页
返回列表 发新帖

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

377.0k 14
swmozowtfl 发表于 2015-7-10 22:28:00|湖北 | 查看全部 阅读模式
考虑以下两段代码: $ z* g+ f1 |. W. ]' L' V/ E
代码如下:  D. `+ y; B9 R- `' O1 G6 f; V
<urlset> $ x9 z2 j. L1 |3 F& J
<url> / P+ h3 B- Q8 h! [
<loc>http://www.caixw.com/archives/1.html</loc> 3 h! Z- D+ G7 Q9 A1 P) n8 l5 B
<lastmod>2010-05-20t16:30:59+08:00</lastmod>
5 Z2 u# z. s+ Y5 a/ b' k</url>
) H. v" r4 ?# u9 e' H<url> $ ?/ n: T5 L. N
<loc>http://www.caixw.com/archives/2.html</loc> / J/ b; y* A* q5 C
<lastmod>2010-05-20t16:35:59+08:00</lastmod>
* a3 C$ Y  s9 w, |</url> " H/ o5 `* m* g
</urlset> " j/ B" p- E. D8 X( W" @+ s
这是一段标准的sitemap文件,当然为简单点,我把url的两个子节点去掉了,但总体上不影响我们使用。6 F4 x# y$ h" B7 b+ r: T8 o
代码如下:5 E& |9 C; I( o! M  E7 D
<xsl:stylesheet version=1.0 xmlns:xsl=>
* D; K" W# o% H+ B: ]<xsl:output method=html encoding=utf-8 indent=yes version=1.0 />
" `" E9 l7 {! g1 |; I# x2 o<xsl:template match=/ xmlns:sm=> - `: {0 m) A% e( Z3 |$ ^! N% y
<html>
) y- g" R+ N2 X/ P<head> & c% @$ Z5 i: _
<title>xml sitemap</title>
& c) N' m- J! E</head> ( g4 \. z8 d) l# o( B+ d$ D
<body>
7 Z+ {# I, ^& i! {+ }3 f" u* v0 a<xsl:apply-templates select=urlset />
0 p  @/ y! E  |</body> % I. [8 C+ c: N4 H5 d* J' N" b
</html>
" g5 L; H6 X3 n1 ?</xsl:template>
8 k& S5 X  ]5 F- P2 E<xsl:template match=urlset>
6 l8 G+ P7 g+ v- o- W, g  P<table>
( u, u3 i# t( l& M* r: L<xsl:for-each select=url> ' e3 _: [& l/ v8 D  r! s3 u
<tr> 1 k  `' R5 x( g( z
<td><a> ) o0 z3 k0 t, s2 a# f- d
<xsl:attribute name=href><xsl:value-of select=loc /></xsl:attribute>
7 {) g1 A* O( F4 |; B<xsl:value-of select=loc />
2 w( S7 A7 Z4 M</a></td> 0 Z0 K* V5 B! h2 \  n
<td><xsl:value-of select=substring-before(lastmod, 't') /></td> / c% P* N1 t7 F9 o1 M& D6 r
</tr> ' X& A. a) N# n. I. ~
</xsl:for-each> + o; ^' j) s  F+ Y5 F9 y
</table> # U/ l% _! m! v- N  E2 g
</xsl:template> . v: U3 k3 m8 F4 {
</xsl:stylesheet>
7 z" w6 l( a, i这是一段转换sitemap的代码,再次偷懒,把输出的表格的内容给过滤掉了一部分。要完整版的看本站右下角的sitemap文件。 , s4 c, V  L. k% m  {
以上这两段代码能够正确的进行转换,没有什么问题。现在我们给xml文件加上一个命名空间(事实上现在大部分xml文件都存在这样那样的命名空间,sitemap也不例外):
" \0 h; ]% s  |: \, R代码如下:$ W+ R1 E# G6 u, m
<urlset xmlns=>
5 b5 e- A% g% v) h) [<url> & E; T: n( u& @5 [3 f. ?, E. ]
<!-- ... --> % s$ l9 w5 C2 c( p) J: D7 M
</url> , i/ y2 l8 Y  x/ m* o: v
</urlset> , |0 z! F. N  j% n. \+ ]: a
ok,现在应该不能正确转换了,body部分变成空的了。很明显无法匹配urlset节点了。因为现在所有sitemap文件下的节点都是带命名空间的,不能再这样直接使用了。都要带上命名空间前缀才能正确匹配。 ; x* x7 \. M, p" Z! ~
当然,要使用命名空间,首先要声明它。在xsl:stylesheet标签中再声明一个命名空间: / Z' h* p" D% E  w% l4 S1 h! @
代码如下:
) C8 r2 f& a  T+ r
<xsl:stylesheet version=1.0 xmlns:xsl= xmlns:sitemap=>
0 ^  A/ ], v3 ^5 g+ A然后在所有原先匹配xml文件节点的都加上sitemap前缀: 9 t( f6 ?9 j) f; L+ G; ^) \
<td><xsl:value-of select=substring-before(sitemap:lastmod, 't') />
9 V4 E8 C! e# x# M5 M* H: O! n: S" C
更多网页制作信息请查看: 网页制作

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