1
我试图在xml文档中基于它周围的节点动态创建一些新节点。我遇到的问题是,我想在股票具有与股票相同的名称空间之后添加新节点。虽然这个例子很容易,但我希望能够在不知道我周围的命名空间的情况下做到这一点。是否有可能复制并重命名一个节点,以便我可以保留其名称空间和其他可能的属性?检测现有节点的名称空间,并通过Xquery将相同名称空间的新节点插入到xml文档中
即如果我有
<?xml version="1.0" encoding="UTF-8"?>
<nsX:bookstore xmlns:nsX="http://namespace1" xmlns:nsY="http://namespace2">
<nsX:bookList>
<nsX:book category="COOKING">
<nsX:title lang="en">Everyday Italian</nsX:title>
<nsY:stock>1</nsY:stock>
</nsX:book>
<nsX:book category="CHILDREN">
<nsX:title lang="en">Harry Potter</nsX:title>
<nsY:stock>0</nsY:stock>
</nsX:book>
<nsX:book category="WEB">
<nsX:title lang="en">XQuery Kick Start</nsX:title>
<nsY:stock>1</nsY:stock>
</nsX:book>
<nsX:book category="WEB">
<nsX:title lang="en">Learning XML</nsX:title>
<nsY:stock>0</nsY:stock>
</nsX:book>
</nsX:bookList>
</nsX:bookstore>
,并希望产生已经不知道什么名称空间存在以下。
<?xml version="1.0" encoding="UTF-8"?>
<nsX:bookstore xmlns:nsX="http://namespace1" xmlns:nsY="http://namespace2">
<nsX:bookList>
<nsX:book category="COOKING">
<nsX:title lang="en">Everyday Italian</nsX:title>
<nsY:stock>1</nsY:stock>
<nsY:newNode></nsY:newNode>
</nsX:book>
<nsX:book category="CHILDREN">
<nsX:title lang="en">Harry Potter</nsX:title>
<nsY:stock>0</nsY:stock>
<nsY:newNode></nsY:newNode>
</nsX:book>
<nsX:book category="WEB">
<nsX:title lang="en">XQuery Kick Start</nsX:title>
<nsY:stock>1</nsY:stock>
<nsY:newNode></nsY:newNode>
</nsX:book>
<nsX:book category="WEB">
<nsX:title lang="en">Learning XML</nsX:title>
<nsY:stock>0</nsY:stock>
<nsY:newNode></nsY:newNode>
</nsX:book>
</nsX:bookList>
</nsX:bookstore>
目前我创建使用XQuery新节点与我BaseXDB
insert node <newNode></newNode> after $v/*:bookList/*:book/*:stock
(其中$ v是书店)
如何检测股票节点的命名空间,然后应用它到我正在创建的新节点?
谢谢@joemfb的帮助。我会给这个镜头。 – 2015-04-02 14:46:03