﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-liujia</title><link>http://www.blogjava.net/liujia/</link><description /><language>zh-cn</language><lastBuildDate>Sat, 25 Apr 2026 04:04:10 GMT</lastBuildDate><pubDate>Sat, 25 Apr 2026 04:04:10 GMT</pubDate><ttl>60</ttl><item><title>XSLT1中处理含有默认名称空间声明的XML文档时的XPATH问题</title><link>http://www.blogjava.net/liujia/archive/2006/07/04/56615.html</link><dc:creator>刘佳</dc:creator><author>刘佳</author><pubDate>Tue, 04 Jul 2006 15:43:00 GMT</pubDate><guid>http://www.blogjava.net/liujia/archive/2006/07/04/56615.html</guid><wfw:comment>http://www.blogjava.net/liujia/comments/56615.html</wfw:comment><comments>http://www.blogjava.net/liujia/archive/2006/07/04/56615.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liujia/comments/commentRss/56615.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liujia/services/trackbacks/56615.html</trackback:ping><description><![CDATA[XSLT1中使用XPATH对含有默认名称空间声明的XML文档进行查找时是查不出内容的<br /><br />例如对于<br /><font color="#0000ff" size="4">&lt;</font>requestHierarchySelectResult xmlns<font color="blue" size="+1">=</font><font color="purple"><a href="http://www.lightcc.com/ns">http://www.lightcc.com/ns</a></font> xmlns<font color="blue" size="+1">:</font>cs<font color="blue" size="+1">=</font><font color="purple">"http://www.customsolids.com"</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br />    </font></span><font color="blue" size="+1">&lt;</font>request<font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br />        </font></span><font color="blue" size="+1">&lt;</font>created_dt<font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray">05/05/2000 00:00:00</font></span><font color="blue" size="+1">&lt;</font><font color="blue" size="+1">/</font>created_dt<font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br />        </font></span><font color="blue" size="+1">&lt;</font>created_tm<font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray">01/01/1900 14:02:46</font></span><font color="blue" size="+1">&lt;</font><font color="blue" size="+1">/</font>created_tm<font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br />        </font></span><font color="blue" size="+1">&lt;</font>cs<font color="blue" size="+1">:</font>request_id<font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray">100002</font></span><font color="blue" size="+1">&lt;</font><font color="blue" size="+1">/</font>cs<font color="blue" size="+1">:</font>request_id<font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br />    </font></span><font color="blue" size="+1">&lt;</font><font color="blue" size="+1">/</font>request<font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">&lt;</font><font color="blue" size="+1">/</font>requestHierarchySelectResult<font color="blue" size="+1">&gt;<br /><font color="#000000">应用</font><br />&lt;<font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">stylesheet xmlns</font><font color="blue" size="+1">:</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">=</font><font size="3"><font color="purple">"http://www.w3.org/1999/XSL/Transform"</font><font color="#000000"> version</font></font><font color="blue" size="+1">=</font><font color="purple"><font size="3">"1.0"</font><font color="#000000" size="3"> <br />   xmlns</font><font color="blue" size="+1">=</font><font size="3"><font color="purple">"http://www.lightcc.com/ns"</font><br /><font color="#000000">   xmlns</font></font><font color="blue" size="+1">:</font><font color="#000000" size="3">cs</font><font color="blue" size="+1">=</font><font color="purple" size="3">"http://www.customsolids.com"</font></font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">   &lt;</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">template match</font><font color="blue" size="+1">=</font><font color="purple" size="3">"/"</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /><font size="3"></font></font></span><font color="blue" size="+1">      &lt;</font><font color="#000000" size="3">root</font><font color="blue" size="+1">&gt;</font><font color="blue" size="+1">&lt;</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">apply</font><font color="blue" size="+1">-</font><font size="3"><font color="#000000">templates  </font><b><font color="red">select</font></b></font></font><font color="blue" size="+1">=</font><font color="purple" size="3">"/*/request"</font><font color="blue" size="+1">/</font><font color="blue" size="+1">&gt;</font><font color="blue" size="+1">&lt;</font><font color="blue" size="+1">/</font><font color="#000000" size="3">root</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">   &lt;</font><font color="blue" size="+1">/</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">template</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">   &lt;</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">template  match</font><font color="blue" size="+1">=</font><font color="purple" size="3">"*|@*|node()"</font><font color="blue" size="+1">/</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">   &lt;</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">template  match</font><font color="blue" size="+1">=</font><font color="purple" size="3">"request"</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /><font size="3">      </font></font></span><font color="blue" size="+1">&lt;</font><font color="#000000" size="3">gotHere</font><font color="blue" size="+1">&gt;</font><font color="blue" size="+1">&lt;</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">value</font><font color="blue" size="+1">-</font><font size="3"><font color="#000000">of  </font><b><font color="red">select</font></b></font><font color="blue" size="+1">=</font><font color="purple" size="3">"."</font><font color="blue" size="+1">/</font><font color="blue" size="+1">&gt;</font><font color="blue" size="+1">&lt;</font><font color="blue" size="+1">/</font><font color="#000000" size="3">gotHere</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">   &lt;</font><font color="blue" size="+1">/</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">template</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">&lt;</font><font color="blue" size="+1">/</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">stylesheet</font><font color="blue" size="+1">&gt;<br /></font><font color="#000000">是没有效果的.<br /></font><font color="#000000">需要给默认的名称空间指定一个前缀<br /></font>&lt;<font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">stylesheet xmlns</font><font color="blue" size="+1">:</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">=</font><font size="3"><font color="purple">"http://www.w3.org/1999/XSL/Transform"</font><font color="#000000"> version</font></font><font color="blue" size="+1">=</font><font color="purple"><font size="3">"1.0"</font><font color="#000000" size="3"> <br />   xmlns:<strong><font face="Arial Black">lc</font></strong></font><font color="blue" size="+1">=</font><font size="3"><font color="purple">"http://www.lightcc.com/ns"</font><br /><font color="#000000">   xmlns</font></font><font color="blue" size="+1">:</font><font color="#000000" size="3">cs</font><font color="blue" size="+1">=</font><font color="purple" size="3">"http://www.customsolids.com"</font></font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">   &lt;</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">template match</font><font color="blue" size="+1">=</font><font color="purple" size="3">"/"</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /><font size="3">       </font></font></span><font color="blue" size="+1">&lt;</font><font color="#000000" size="3">root</font><font color="blue" size="+1">&gt;</font><font color="blue" size="+1">&lt;</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">apply</font><font color="blue" size="+1">-</font><font size="3"><font color="#000000">templates  </font><b><font color="red">select</font></b></font><font color="blue" size="+1">=</font><font color="purple" size="3">"/*/<strong><font face="Arial Black">lc</font></strong>:request"</font><font color="blue" size="+1">/</font><font color="blue" size="+1">&gt;</font><font color="blue" size="+1">&lt;</font><font color="blue" size="+1">/</font><font color="#000000" size="3">root</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">   &lt;</font><font color="blue" size="+1">/</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">template</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">   &lt;</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">template  match</font><font color="blue" size="+1">=</font><font color="purple" size="3">"*|@*|node()"</font><font color="blue" size="+1">/</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">   &lt;</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">template  match</font><font color="blue" size="+1">=</font><font color="purple" size="3">"<strong><font face="Arial Black">lc</font></strong>:request"</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /><font size="3">      </font></font></span><font color="blue" size="+1">&lt;</font><font color="#000000" size="3">gotHere</font><font color="blue" size="+1">&gt;</font><font color="blue" size="+1">&lt;</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">value</font><font color="blue" size="+1">-</font><font size="3"><font color="#000000">of  </font><b><font color="red">select</font></b></font><font color="blue" size="+1">=</font><font color="purple" size="3">"."</font><font color="blue" size="+1">/</font><font color="blue" size="+1">&gt;</font><font color="blue" size="+1">&lt;</font><font color="blue" size="+1">/</font><font color="#000000" size="3">gotHere</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">   &lt;</font><font color="blue" size="+1">/</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">template</font><font color="blue" size="+1">&gt;</font><span class="cch1"><font color="gray"><br /></font></span><font color="blue" size="+1">&lt;</font><font color="blue" size="+1">/</font><font color="#000000" size="3">xsl</font><font color="blue" size="+1">:</font><font color="#000000" size="3">stylesheet</font><font color="blue" size="+1">&gt;<br /></font><font color="#000000">据说XSLT2和XPATH2会解决这个问题<br /></font><br />参考:<br />   <a href="http://www.edankert.com/defaultnamespaces.html">http://www.edankert.com/defaultnamespaces.html</a><br />   <a href="http://www.topxml.com/people/bosley/defaultns.asp">http://www.topxml.com/people/bosley/defaultns.asp</a><br /><br /><br /><img src ="http://www.blogjava.net/liujia/aggbug/56615.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liujia/" target="_blank">刘佳</a> 2006-07-04 23:43 <a href="http://www.blogjava.net/liujia/archive/2006/07/04/56615.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XMLBeans和SAXON的配对问题</title><link>http://www.blogjava.net/liujia/archive/2006/07/03/56418.html</link><dc:creator>刘佳</dc:creator><author>刘佳</author><pubDate>Mon, 03 Jul 2006 14:11:00 GMT</pubDate><guid>http://www.blogjava.net/liujia/archive/2006/07/03/56418.html</guid><wfw:comment>http://www.blogjava.net/liujia/comments/56418.html</wfw:comment><comments>http://www.blogjava.net/liujia/archive/2006/07/03/56418.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liujia/comments/commentRss/56418.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liujia/services/trackbacks/56418.html</trackback:ping><description><![CDATA[
		<p>项目中用到XMLBeans做XML的数据绑定工作,但是发现生成的代码中的selectPath并不工作,调查后发现要使用SAXON,但是下载最新版后发现仍然不能正常工作.又经过调查得以解决.</p>
		<p>XMLBeans2.2版是和saxon的8.6.1版一起工作的。最初的8.7和GOOGLE到的解决方案中为2.0版准备的8.1都不行<br />XMLBeans2.2:<br /><a href="http://mirror.vmmatrix.net/apache/xmlbeans/binaries/">http://mirror.vmmatrix.net/apache/xmlbeans/binaries/</a><br /><br />saxon 8.6.1:<br /><a href="http://jaist.dl.sourceforge.net/sourceforge/saxon/saxonb8-6-1.zip">http://jaist.dl.sourceforge.net/sourceforge/saxon/saxonb8-6-1.zip</a><br /><br />xpath查询至少需要 saxon8.jar saxon8-dom.jar saxon8-xpath.jar才能正常工作<br />缺少saxon8.jar会报如下错误</p>
		<p>java.lang.RuntimeException:  Trying XBeans path engine... Trying XQRL... Trying Saxon... FAILED on $this/data[@name='data2']<br /> at org.apache.xmlbeans.impl.store.Path.getCompiledPath(Path.java:131)<br /> at org.apache.xmlbeans.impl.store.Path.getCompiledPath(Path.java:91)<br /> at org.apache.xmlbeans.impl.store.Cursor._selectPath(Cursor.java:902)<br /> at org.apache.xmlbeans.impl.store.Cursor.selectPath(Cursor.java:2634)<br /> at org.apache.xmlbeans.impl.values.XmlObjectBase.selectPath(XmlObjectBase.java:431)<br /> at org.apache.xmlbeans.impl.values.XmlObjectBase.selectPath(XmlObjectBase.java:415)<br /> at test.main(test.java:16)<br />Exception in thread "main" </p>
		<p>只放saxon8.jar也是不正确的.缺少其他2个jar查询结果会不正确<br /><br />简单测试:<br />SCHEMA:<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;xs:schema xmlns:xs="<a href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</a>" elementFormDefault="qualified" attributeFormDefault="unqualified"&gt;<br /> &lt;xs:element name="root" type="rootType"&gt;<br />  &lt;xs:annotation&gt;<br />   &lt;xs:documentation&gt;rootcomment&lt;/xs:documentation&gt;<br />  &lt;/xs:annotation&gt;<br /> &lt;/xs:element&gt;<br /> &lt;xs:complexType name="dataType"&gt;<br />  &lt;xs:attribute name="name" use="required"/&gt;<br /> &lt;/xs:complexType&gt;<br /> &lt;xs:complexType name="datasType"&gt;<br />  &lt;xs:sequence&gt;<br />   &lt;xs:element name="data" minOccurs="0" maxOccurs="unbounded"&gt;<br />    &lt;xs:complexType&gt;<br />     &lt;xs:simpleContent&gt;<br />      &lt;xs:extension base="xs:string"&gt;<br />       &lt;xs:attribute name="name" use="required"/&gt;<br />      &lt;/xs:extension&gt;<br />     &lt;/xs:simpleContent&gt;<br />    &lt;/xs:complexType&gt;<br />   &lt;/xs:element&gt;<br />  &lt;/xs:sequence&gt;<br /> &lt;/xs:complexType&gt;<br /> &lt;xs:complexType name="rootType"&gt;<br />  &lt;xs:sequence&gt;<br />   &lt;xs:element name="datas" type="datasType"/&gt;<br />  &lt;/xs:sequence&gt;<br /> &lt;/xs:complexType&gt;<br />&lt;/xs:schema&gt;<br /><br />XML:<br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;root xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance">http://www.w3.org/2001/XMLSchema-instance</a>" xsi:noNamespaceSchemaLocation="Z:\test.xsd"&gt;<br /> &lt;datas&gt;<br />  &lt;data name="data1"&gt;value1&lt;/data&gt;<br />  &lt;data name="data2"&gt;value2&lt;/data&gt;<br />  &lt;data name="data3"&gt;value3&lt;/data&gt;<br /> &lt;/datas&gt;<br />&lt;/root&gt;<br /><br />jest.java<br /><br />import java.io.File;</p>
		<p>import noNamespace.DatasType;<br />import noNamespace.RootDocument;</p>
		<p>import org.apache.xmlbeans.XmlObject;</p>
		<p>public class test {<br /> final static String NS_DECLEAR = "";<br /> public static void main(String[] args) throws Exception {<br />  RootDocument doc = RootDocument.Factory.parse(new File("z:\\test.xml"));<br />  <br />  DatasType datas = doc.getRoot().getDatas();<br />  <br />  XmlObject[] objs = datas.selectPath("$this/data[@name='data2']");<br />  <br />  for (int i = 0; i &lt; objs.length; i++) {<br />   System.out.println(objs[i]);<br />  }<br /> }<br />}<br /><br />输出:<br /><br />&lt;xml-fragment name="data2" xmlns:xsi="<a href="http://www.w3.org/2001/XMLSchema-instance&quot;&gt;value2&lt;/xml-fragment">http://www.w3.org/2001/XMLSchema-instance"&gt;value2&lt;/xml-fragment</a>&gt;<br /><br /> </p>
<img src ="http://www.blogjava.net/liujia/aggbug/56418.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liujia/" target="_blank">刘佳</a> 2006-07-03 22:11 <a href="http://www.blogjava.net/liujia/archive/2006/07/03/56418.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>