这里一个新的XML元素
一个开放的XML文档中替换
元素是XML文档的样本之前,我跑我的XQuery:
<?xml version="1.0" encoding="UTF-8" standalone='yes'?>
<w:document xmlns:ve="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml">
<w:body>
...
<w:p w:rsidR="00BB265E" w:rsidRDefault="00BB265E">
<w:pPr>
<w:pStyle w:val="DefaultText"/>
<w:ind w:left="720" w:hanging="720"/>
</w:pPr>
<w:r>
<w:t>1.7</w:t>
</w:r>
<w:r>
**<w:tab/>**
</w:r>
<w:r w:rsidRPr="001C1D1B">
<w:rPr>
<w:shd w:val="clear" w:color="auto" w:fill="FABF8F"/>
</w:rPr>
<w:t>Member means any person who is enrolled in</w:t>
</w:r>
...
下面是一些我尝试了XQuery查询运行:
查询1
UPDATE XML_TORTEST
SET XMLDOC = updateXML(XMLDOC,'declare namespace w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"; /w:document/w:body/w:p/w:r/w:tab',
XMLType('<w:t> </w:t>'))
WHERE XML_TORTEST_ID = 1
AND XMLExists('$p/w:document/w:body/w:p/w:r/w:tab'
PASSING XMLDOC AS "p");
这给出了这样的错误:
SQL错误:ORA-31013:无效的XPATH表达式 31013. 00000 - “无效的XPATH表达式” *原因:传递给函数的XPATH表达式无效。 *操作:检查xpath表达式是否有可能的语法错误。我想与使用XQuery
查询2 - 工作,但XML输出不正确(不是真的)
UPDATE XML_TORTEST po
SET po.XMLDOC =
XMLQuery('declare namespace w="http://schemas.openxmlformats.org/wordprocessingml/2006/main";
copy $i := $p1
modify
(
for $j in $i/w:document/w:body/w:p/w:r/w:tab
let $newn := ''<w:t> </w:t>''
return replace node $j with $newn)
return $i' PASSING po.XMLDOC AS "p1"
RETURNING CONTENT)
WHERE XML_TORTEST_ID = 1
AND XMLExists('declare namespace w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"; $p/w:document/w:body/w:p/w:r/w:tab'
PASSING po.XMLDOC AS "p");
下面是示例XML后,我跑了查询2:
<w:p w:rsidR="00BB265E" w:rsidRDefault="00BB265E">
<w:pPr>
<w:pStyle w:val="DefaultText"/>
<w:ind w:left="720" w:hanging="720"/>
</w:pPr>
<w:r>
<w:t>1.7</w:t>
</w:r>
**<w:r><w:t> </w:t></w:r>**
<w:r w:rsidRPr="001C1D1B">
<w:rPr>
<w:shd w:val="clear" w:color="auto" w:fill="FABF8F"/>
</w:rPr>
<w:t>Member means any person who is enrolled in</w:t>
</w:r>
....
任何帮助的<w:t> </w:t>
转换到<w:t> </w:t>
表示赞赏。
如果我删除了',改变$ newn:= 的 被替换为没有。 –
tstorli