我有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 ])
有没有办法实现这个目标?
答案 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元素