以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XQuery/XLink/XPointer/ 』  (http://bbs.xml.org.cn/list.asp?boardid=14)
----  xquery的实现  (http://bbs.xml.org.cn/dispbbs.asp?boardid=14&rootid=&id=28922)


--  作者:胡多
--  发布时间:3/20/2006 1:29:00 PM

--  xquery的实现
小弟近日看书看到 xquery的查询表达式,FLWOR表达式,感觉也挺好理解,但有一个问题,我可以用哪个工具将其在电脑上实现呢?
比如我看书上的例子:
1. 有一段XML语句;
2. 有一段FLWOR查询语句;
3. 接着输入结果。
我想将上述过程在电脑上运行实现,不知是用什么工具?非常希望哪位大侠能够指点我一下,非常感谢。
—— 胡多
--  作者:SATOKO2006
--  发布时间:3/20/2006 1:50:00 PM

--  
实现工具根据你的Xquery版本而定,用XMLSPY实现是很好的选择
--  作者:胡多
--  发布时间:3/22/2006 6:56:00 PM

--  
SATOKO2006:你好,我这两天下载了XMLSPY用着试了试,可以用来编写XML和XQUERY文档,但编写的这两个文件能否在XMLSPY中调试运行呢?也就是用编写的XQUERY语句去查询处理XML文档,然后输出结果,这个功能能否在XMLSPY中实现,而不需要就java或者其它开发环境?
非常希望能得到你的答复,谢谢。

--  作者:SATOKO2006
--  发布时间:3/23/2006 11:15:00 AM

--  
能啊,你再熟悉一下XMLSPY吧,呵呵
--  作者:hander
--  发布时间:10/25/2006 6:47:00 PM

--  
我最近Download "Stylus Studio 2007 XML Enterprise Suite"
利用其中工具编辑 xquery file,
同时可以Preview Result,很方便使用。

只是有没有利用Command Line 去执行 Xquery file
的工具,因为想要系统自动执行。


--  作者:sword_ljx
--  发布时间:10/26/2006 12:04:00 AM

--  可以使用第三方的xquery实现类库
推荐saxon,sourceforge上有类库和源码下载,附带详细的帮助文档和例子。
下面是里面的一段代码,非常简单
            XQDataSource ds = new SaxonXQDataSource();
            XQConnection conn = ds.getConnection();
            XQPreparedExpression exp = conn.prepareExpression("<a b='c'>{5+2}  </a>");
            XQResultSequence result = exp.executeQuery();
            while (result.next()) {
                System.out.println(result.getItemAsString());
            }

输出结果:
<?xml version="1.0" encoding="UTF-8"?><a b="c">7</a>


--  作者:hander
--  发布时间:10/26/2006 7:04:00 PM

--  
我有一个XML file , file name : test.xml
<configData dnPrefix="Undefined">
    <un:Production id="153602">
        <un:attributes>
             <un:userLabel>Tom 153602</un:userLabel>
             <un:Id>53602</un:cId>
             <un:price>9210</un:lac>
        </un:attributes>
        <xn:Sale id="153602">
               <xn:attributes>
                   <es:reservedBy>SalesAccount=153381</es:reservedBy>
                   <es:reservedBy>SalesAccount=153382</es:reservedBy>
                   <es:reservedBy>SalesAccount=153383</es:reservedBy>
                   <es:reservedBy>SalesAccount=153384</es:reservedBy>
                   <es:reservedBy>SalesAccount=153385</es:reservedBy>
                   <es:reservedBy>SalesAccount=153386</es:reservedBy>
                </xn:attributes>
          </xn:Sale>
    </un:Production>
</configData>

因此我准备了Xquery file , test.xquery 如下
declare namespace a = "configData.xsd";
declare namespace xn = "generic.xsd";
declare namespace un = "userName.xsd";
declare namespace es="enterprise.xsd";

let $doc :=  doc("file:///g:/test.xml")
for $v in $doc//un:Production
let $UC_ATT := $v/un:attributes
let $UC_NBL :=$v//es:reservedBy
where $v/@id = "153602"
return
for $i in 1 to count($UC_NBL)
return
concat( $UC_ATT/un:Id,";",$UC_ATT/un:price,";", $UC_NBL[$i],";")

执行之后的结果
<?xml version="1.0" encoding="UTF-8"?>53602;9210;9210;SaleAccount=153381;53602;9210;9210;SaleAccount=153382; 53602;9210;9210;SaleAccount=153383;53602;9210;9210;SaleAccount=153384;53602;9210;9210;SaleAccount=153385;53602;9210;9210;SaleAccount=153386;

==> 请问如何让结果断行


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
89.844ms