Xpointer:可以选择一个空节点集吗?

时间:2015-03-19 11:17:03

标签: xml empty-list xinclude node-set xpointer

问题

我有XInclude,其中包含由指定的xpointer属性表达式生成的节点集。

是否可以使用xpointer选择空节点集,以便不包含任何内容?


问题

原因是我的 xincluded & xpointed 节点可能存在且不能存在;所以我得到了:

  

XInclude错误:XPointer评估失败

在指向节点不存在的情况下。


实施例

表达式如下:

    xmlns(ns=urn:my:namespace)
    xpointer(/ns:element1/*[ns:elementA | ns:elementB])

我想更改XPointer,以便在找不到节点的情况下XInclude不包含任何内容(不引发错误)。

类似的东西:

    xmlns(ns=urn:my:namespace)
    xpointer(/ns:element1/*[ns:elementA | ns:elementB | NOT_FOUND_NODES ])

有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用xi:fallback指令?

例如,如果你指示这个

<xi:include href="somedoc.xml" xpointer="xmlns(ns=urn:my:namespace)xpointer(/ns:element1/*[ns:elementA | ns:elementB])" />

并且xpointer资源不存在,您将收到资源错误(如xpointer规范中所述)。为避免这种情况,您可以使用后备:

<xi:include href="somedoc.xml" xpointer="xmlns(ns=urn:my:namespace)xpointer(/ns:element1/*[ns:elementA | ns:elementB])">
   <xi:fallback><NOT_FOUND_NODES/></xi:fallback>
</xi:include>

所以当xpointer出现资源错误时,后备将插入NOT_FOUND_NODES元素