Inf*_*opy 1 xml xquery basex reqif
我有一个相对复杂的XML文件,它遵循ReqIF标准,希望使用BaseX进行操作。当我删除节点xlmns中的所有属性时REQ-IF,可以执行XQueries并遍历//REQ-IF/THE-HEADERXQuery栏中的文件(例如),并按预期查看结果。
但是,当我包含xlmns属性时,所有查询都不起作用。更糟糕的是,当我在“地图视图”中选择一个节点以复制路径并将其粘贴到XQuery栏中时,也不会返回任何结果。
那么,如何表达一种XQuery(大概使用名称空间信息)来到达此XML文件的内部?
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<REQ-IF xmlns="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd reqif.xsd" xmlns:reqif="http://www.omg.org/spec/ReqIF/20110401/reqif.xsd" xmlns:reqif-xhtml="http://www.w3.org/1999/xhtml" xmlns:rm-reqif="http://www.ibm.com/rm/reqif" xmlns:xhtml="http://www.w3.org/1999/xhtml" >
<THE-HEADER>
</THE-HEADER>
<CORE-CONTENT>
<REQ-IF-CONTENT>
<DATATYPES>
</DATATYPES>
<SPEC-TYPES>
</SPEC-TYPES>
<SPEC-OBJECTS>
</SPEC-OBJECTS>
<SPEC-RELATIONS>
</SPEC-RELATIONS>
<SPECIFICATIONS>
</SPECIFICATIONS>
<SPEC-RELATION-GROUPS>
</SPEC-RELATION-GROUPS>
</REQ-IF-CONTENT>
</CORE-CONTENT>
</REQ-IF>
Run Code Online (Sandbox Code Playgroud)
好吧,查看您最喜欢的XQuery教程或规范,它显示您可以声明默认元素名称空间https://www.w3.org/TR/xquery-31/#id-default-namespace
declare default element namespace "http://www.omg.org/spec/ReqIF/20110401/reqif.xsd";
/REQ-IF/CORE-CONTENT/REQ-IF-CONTENT/DATATYPES
Run Code Online (Sandbox Code Playgroud)
(示例https://xqueryfiddle.liberty-development.net/pPgCcoC)
或另一个名称空间https://www.w3.org/TR/xquery-31/#id-namespace-declaration
declare namespace reqif = "http://www.omg.org/spec/ReqIF/20110401/reqif.xsd";
/reqif:REQ-IF/reqif:CORE-CONTENT/reqif:REQ-IF-CONTENT/reqif:DATATYPES
Run Code Online (Sandbox Code Playgroud)
(在线https://xqueryfiddle.liberty-development.net/pPgCcoC/1)
此外,还有通配符命名空间表达式,例如/*:REQ-IF和增强的QName,例如(/Q{http://www.omg.org/spec/ReqIF/20110401/reqif.xsd}REQ-IF)
| 归档时间: |
|
| 查看次数: |
63 次 |
| 最近记录: |