Archive for the 'XML & XSL' Category

PHP与XML的相关文章列表

以下文章来自“IBM developerWorks 中国”

面向 PHP 开发人员的 XML,第 1 部分: PHP XML 开发 15 分钟快速入门
面向 PHP 开发人员的 XML,第 2 部分: 高级 XML 解析技术

Introducing Berkeley DB XML

Berkeley DB XML入门
For dbxml-2.2.13
第一章 概观
本章内容的以dbxml-2.2.13为例,请使用dbxml-2.2.13
基础
BDB xml 以库的形式直接练到用户的应用程序,BDB XML也有一个命令提示符让用户在脱离编程环境的情况下访问xml文档,你可以把命令提示符作为你应用程序的管理工具.
在DBD xml中,所有的数据存储在成为”容器”(containers)的文件中,BDB xml shell
提供了简便的方式操纵”容器”和所有的DBD功能.
容器可以把整个XML文档存储为一个文档,或把其中的节点单独存储,当整体存储时,XML文档就是一个”容器”或一个系统文件,当存储节点时,xml被分割成小块,存储在”容器”中.
在”节点存储”模式下,取出的文档的格式就是你存储的的格式(除非你指定了格式输出),区别就在于你是怎么存储的.”节点存储”模式比”整个文档存储”提供更好的性能.所有默认是”节点存储”模式
使用SHELL
shell命令在BDB xml的安装目录的bin目录下,进入bin目录输入dbxml启动shell
如下
Bin>dbxml
d’b’xml>
BDB xml的语句有单行的和多行的.
BDB xml 用容器来存储文档 ,容器包含文档的集合,在一个容器中的多个文档可以结构不同,也可以相同.
开始我们的BDB xml之旅,首先创建一个容器,我们的第一个例子是一个简单的电话本,容器的名字叫phone.dbxml(扩展名不是必须为dbxml,但推荐这么写)
dbxml>createContainer phone.dbxml
因为我们现在所在的目录是bin>,所以phone.dbxml创建在bin目录下
创建完成后,shell会自动打开最后一个创建的容器.
接下来输入xml到phone.dbxml
(以’(单引号)包含输入的数据)
dbxml>putDocument phone1 ‘
(回车)
(回车)
Tom(回车)
Jones(回车)
(回车)
420-203-2033(回车)
‘(空格)s(回车)(s表示输入结束)
如果成功,则显示
Document added,name=phone1
再输入一条记录
dbxml> putDocument phone2 ‘
(回车)
(回车)
Lisa(回车)
Smith(回车)

420-992-4801(回车)
390-812-4292(回车)
‘(空格)s(回车)
如果成功,则显示
Document added, name = phone2
现在phone.dbxml中有了两条记录,在下面的例子中应用了几个基本的基于XPath 语句的XQuery查询 ,以后会有更复杂的XQuery 语句.
XPath语句是XQuery规范的一个主要部分,就像SELECT语句在sql中一样//注意collection (”phone.dbxml”)这个语句,我们也可以简单的写为collection ()表示我们的操作对象是当前打开的容器.
dbxml>query ‘collection (”phone.dbxml”) /phonebook/name/last/string();
查询成功后显示
2 objects returned for eager expression ‘
collection(”phone.dbxml”)/phonebook/name/last/string()’
显示一下找到的last name
dbxml>print
Jones
Smith
至此,第一个小试验已经成功
下面我们找一下 lisa的home phone number
dbxml>query ‘collection(”phone.dbxml”)/phonebook[name/first=”Lisa”]/phone[@type=”home”]/string()’
查询成功后显示
1 objects returned for eager expression ‘
collection(”phone.dbxml”)/phonebook[name/first […]

基于Lucene/XML的站内全文检索解决方案

基于Lucene/XML的站内全文检索解决方案
作者: 车东 Email: chedongATbigfoot.com/chedongATchedong.com
写于:2003/05 最后更新:

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明

http://www.chedong.com/tech/weblucene.html
关键词:Lucene xml xslt web site search engine

内容摘要:
为Lucene做一个通用XML接口一直是我最大的心愿:更方便的在WEB应用中嵌入全文检索功能

提供了XML的数据输入接口:适合将原有基于各种数据库的数据源导入到全文索引中,保证了数据源的平台无关性;
通过了基于XML的搜索结果输出:方便了通过XSLT进行前台的结果显示;

MySQL […]

Berkeley DB XML and python

Berkeley DB XML是一种原生的XML数据库,它允许将XML文档内容直接存储在数据库中。
由此,我想可以用它来存储一些简单的、不经常更新的、但是要求快速查询的数据。
我们通过一个简单的例子来说明,如何针对Berkeley DB XML来存储XML文档:
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from bsddb.db import *
from dbxml import *
 
mgr = XmlManager()
uc = mgr.createUpdateContext()
 
container = mgr.openContainer("demo.dbxml", DB_CREATE)
 
filename = ‘demo’
fileContents = """<?xml version="1.0" encoding="UTF-8"?>
<result>OK</result>
"""
 
container.putDocument(filename, fileContents, uc)
在这个例子中,会创建一个名为demo.dbxml的数据库文件。
相应的,我们读取刚刚存储的内容,可以使用:
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from bsddb.db import *
from dbxml import *
 
mgr = XmlManager()
 
container = mgr.openContainer("demo.dbxml")
container.addAlias("demo")
 
qc = mgr.createQueryContext()
 
results = mgr.query("collection(’demo’)/result", qc)
 
for value in results:
    document = value.asDocument()
    print document.getName(), "=", value.asString()
在实际应用过程中,发现当大量数据同时插入的时候,会产生类似以下的错误:

Traceback […]

Berkeley DB XML for PHP 方法总结

原文点击这里查看:(1), (2), (3)。
DBXML for PHP 并没有提供全部的 for C 方法
XmlManager
XmlManager::existsContainer()
XmlManager::createContainer()
XmlManager::openContainer()
XmlManager::removeContainer()
XmlManager::renameContainer()
XmlManager::createMemBufInputStream()
XmlManager::createDocument()
XmlManager::createQueryContext()
XmlManager::createUpdateContext()
XmlManager::prepare()
XmlManager::query()
XmlManager::createResults()
XmlManager::createModify()
XmlManager::createTransaction()
XmlManager::createIndexLookup()
XmlManager::upgradeContainer()
XmlContainer
XmlContainer::addAlias()
XmlContainer::addDefaultIndex()
XmlContainer::addIndex()
XmlContainer::close()
XmlContainer::deleteDefaultIndex()
XmlContainer::deleteDocument()
XmlContainer::deleteIndex()
XmlContainer::getAllDocuments()
XmlContainer::getContainerType()
XmlContainer::getDocument()
XmlContainer::getIndexNodes()
XmlContainer::getIndexSpecification()
XmlContainer::getName()
XmlContainer::getNumDocuments()
XmlContainer::lookupIndex()
XmlContainer::lookupStatistics()
XmlContainer::putDocument()
XmlContainer::removeAlias()
XmlContainer::replaceDefaultIndex()
XmlContainer::replaceIndex()
XmlContainer::setIndexSpecification()
XmlContainer::updateDocument()
XmlIndexLookup
XmlIndexLookup::execute()
XmlIndexLookup::getContainer()
XmlIndexLookup::getHighBoundOperation()
XmlIndexLookup::getHighBoundValue()
XmlIndexLookup::getIndex()
XmlIndexLookup::getLowBoundOperation()
XmlIndexLookup::getLowBoundValue()
XmlIndexLookup::getNodeName()
XmlIndexLookup::getNodeURI()
XmlIndexLookup::getParentName()
XmlIndexLookup::getParentURI()
XmlIndexLookup::setContainer()
XmlIndexLookup::setHighBound()
XmlIndexLookup::setIndex()
XmlIndexLookup::setLowBound()
XmlIndexLookup::setNode()
XmlIndexLookup::setParent()
附:安装PHP的dbxml扩展(windows下的暂时没有找到)
载 wget http://download.oracle.com/berkeley-db/dbxml-2.2.13.tar.gz
tar zxvf dbxml-2.2.13.tar.gz
cd dbxml-2.2.13
./buildall.sh
编译 Berkeley DB for php 模块
cd dbxml-2.2.13/db-4.3.29/php_db4
phpize
./configure –with-db4
make
make install
编译 Berkeley DB XML for php 模块
cd dbxml-2.2.13/dbxml/src/php
phpize
make
make install
修改php.ini
extension=db4.so
extension=dbxml.so
重启 apache

Python读写Berlekey DB XML的例子

#!/usr/bin/env python
# $Id: examples.py,v 1.23 2005/09/25 23:36:42 gmf Exp $
# As of Python 2.3, there is a built-in module for Berkeley DB,
# called bsddb.  The next uncommented line assumes that module is being used.
# If you are using your own bsddb3 module, use this line:
#      from bsddb3.db import *
from bsddb3.db import *
from dbxml import *
 
book_content […]

Berkeley DB and python

Berkeley DB
产品首页 , 官方下载地址
Berkeley DB XML
产品首页 , 官方下载地址
首先,我们可以通过一个简单的例子来说明如何使用bsddb:
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from bsddb import *
demodb = hashopen(’demo.db’, ‘c’)
for i in range(10):
    demodb[’%d’%i] = ‘%d’%(i*i)
我们通过一个简单的例子来说明,如何针对Berkeley DB XML来存储XML文档:
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from bsddb.db import *
from dbxml import *
 
mgr = XmlManager()
uc = mgr.createUpdateContext()
 
container = mgr.openContainer("demo.dbxml", DB_CREATE)
 
filename = ‘demo’
fileContents = """<?xml version="1.0" encoding="UTF-8"?>
<result>OK</result>
"""
 
container.putDocument(filename, fileContents, uc)
在这个例子中,会创建一个名为demo.dbxml的数据库文件。
相应的,我们读取刚刚存储的内容,可以使用:
#!/usr/bin/python
# -*- coding: utf-8 -*-
 
from bsddb.db import *
from dbxml import […]