【问题标题】:Xpointer: is it possible to select an empty node-set?Xpointer:是否可以选择一个空的节点集?
【发布时间】:2015-03-19 11:17:03
【问题描述】:

问题

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

有没有办法做到这一点?

【问题讨论】:

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


    【解决方案1】:

    您是否尝试使用 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 陷入资源错误时,fallback 会插入 NOT_FOUND_NODES 元素

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      • 2016-10-11
      相关资源
      最近更新 更多