[Miles' Blog]

Welcome 2 My Planet

Available categories: [/] [development. ~]

d-o-e PI以及奇怪的namespace问题 [Permalink]

Fri Mar 25 19:16:40 CST 2005
Category [trouble shooting]

在xslt中,经常有需要保留<>,不把它替换成&lt;&gt;的需求。比如今天就遇到了需要在xslt中利用xalan调用java static method,生成部分wml代码的情况。按规范上说,只需要用

<xsl:value-of disable-output-escaping="yes" select="string('<')"/>
这样的方式,就可以达到目的。这种方法在MSXML中完全没有问题。可是,到了java中情况就完全不同了。上述代码得到的是这样的一个半成品:
<?javax.xml.transform.disable-output-escaping?>
意思似乎是让你再找个什么玩意作二次转换。可是找了一圈也没有找到处理这个d-o-e PI的办法。鉴于时间有限,只能用笨办法了:就是字符串分析替换。邮件列表里面很多人都遇到了这个问题而且一筹莫展,真搞不懂这个设计是什么意思 /images/emoticons/plain.gif

做了半天苦力搞好了这个问题,新的,更BT的问题又来了。这样的一个xsl文件:
<xsl:stylesheet 
  version="1.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:funcs="xalan://com.yupstudio.app.downwap.common.util.XSLTFuncs">

  <xsl:output 
    method="wml" 
    omit-xml-declaration="no" 
    indent="no" 
    doctype-public="-//WAPFORUM//DTD WML 1.3//EN"
    doctype-system="http://www.wapforum.org/DTD/wml13.dtd" />
......
实在搞不清楚为什么会有这样的输出:
<wml 
  xmlns:funcs="xalan://com.yupstudio.app.downwap.common.util.XSLTFuncs">
这个namespace说明的attr为什么会加入这里?要知道到生成这个结果的时候,xalan已经发挥完作用了啊!解决方式仍然是简单粗暴:用regexp直接搞掉tag的所有attr。

最后,一个字总结今天的心得——郁闷成P了!


补充一下,前两天这个namespace错误又有出现。观察现象发现当主xsl和include进来的xsl的xsl:stylesheet标签中的xmlns声明部分有不同时就会使得included xsl的顶级标记中出现xmlns的声明。

例如主xsl(main.xsl):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:funcs="xalan://com.yupstudio.app.downwap.common.util.XSLTFuncs">
从xsl(footer.xsl):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:funcs="xalan://com.yupstudio.app.downwap.common.util.XSLTFuncs"
xmlns:digest="xalan://com.yupstudio.app.downwap.common.util.DigestUtil">
那么在footer xsl负责解析的wml底部的那个P标记就会成为:
<xmlns:digest="xalan://com.yupstudio.app.downwap.common.util.DigestUtil">
修改主从的xmlns定义一致即可解决问题。 --08-01-18

Posted by: miles
Comments [0] |

?
九月 2010
Sun? Mon? Tue? Wed? Thu? Fri? Sat?
   1234
567891011
12131415161718
19202122232425
2627282930  
       
<  Aug???Today??? Oct  >
<< <   1   > >>

Available categories: [/] [development. ~]

Powered By blojsom?? RSS Feed? RSS2 Feed? RDF Feed

html hits:?40