XQuery - 包括处理指令
XQuery - Including Processing Instruction
我有一个 xml 具有以下结构
<?xml version="1.0" encoding="UTF-8"?>
<MYXML>
<?source-system-command name="abc"?>
<NAME></NAME>
<REQUEST>request</REQUEST>
</MYXML>
我想提取 REQUEST TAG - Xquery 是 /MYXML/REQUEST
我得到 <Request></Request>
标签
但是,现在我希望从 MYXML 中删除 REQUEST 标记
所以我正在寻找的输出是
<?xml version="1.0" encoding="UTF-8"?>
<MYXML>
<?source-system-command name="abc"?>
<NAME></NAME> >!-- NO REQUEST -->
</MYXML>
我写了下面的 XQUERY - "/MYXML/*[not(self::REQUEST)]"
但是这过滤了处理指令 <?source-system-command name="abc"?>
我错过了什么?如何告诉XQUERY不要过滤掉处理指令?
使用 SAXON-HE 9
使用 /MYXML/*[not(self::REQUEST)]
你 select 只有元素节点,所以你至少需要 /MYXML/node()[not(self::REQUEST)]
或(更多 XPath 2/3,类似 XQuery 并且更接近正常语言使用) /MYXML/(node() except REQUEST)
。但是请注意,所有这些尝试仅 select MYXML
根元素的那些子元素而不是根元素本身,您需要使用例如
重建它
<MYXML>{/MYXML/(node() except REQUEST)}</MYXML>
或
/*!element {name()} { node() except REQUEST }
我有一个 xml 具有以下结构
<?xml version="1.0" encoding="UTF-8"?>
<MYXML>
<?source-system-command name="abc"?>
<NAME></NAME>
<REQUEST>request</REQUEST>
</MYXML>
我想提取 REQUEST TAG - Xquery 是 /MYXML/REQUEST
我得到 <Request></Request>
标签
但是,现在我希望从 MYXML 中删除 REQUEST 标记
所以我正在寻找的输出是
<?xml version="1.0" encoding="UTF-8"?>
<MYXML>
<?source-system-command name="abc"?>
<NAME></NAME> >!-- NO REQUEST -->
</MYXML>
我写了下面的 XQUERY - "/MYXML/*[not(self::REQUEST)]"
但是这过滤了处理指令 <?source-system-command name="abc"?>
我错过了什么?如何告诉XQUERY不要过滤掉处理指令?
使用 SAXON-HE 9
使用 /MYXML/*[not(self::REQUEST)]
你 select 只有元素节点,所以你至少需要 /MYXML/node()[not(self::REQUEST)]
或(更多 XPath 2/3,类似 XQuery 并且更接近正常语言使用) /MYXML/(node() except REQUEST)
。但是请注意,所有这些尝试仅 select MYXML
根元素的那些子元素而不是根元素本身,您需要使用例如
<MYXML>{/MYXML/(node() except REQUEST)}</MYXML>
或
/*!element {name()} { node() except REQUEST }