0

问题

我有一个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 ])

有没有办法做到这一点?

4

1 回答 1

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 元素

于 2015-04-28T13:49:12.097 回答