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 }

https://xqueryfiddle.liberty-development.net/pPgCcom