我有以下 XML 文档:
<text xmlns:its="http://www.w3.org/2005/11/its" >
<its:rules version="2.0">
<its:termRule selector="//term" term="yes" termInfoPointer="id(@def)"/>
</its:rules>
<p>We may define <term def="TDPV">discoursal point of view</term>
as <gloss xml:id="TDPV">the relationship, expressed through discourse
structure, between the implied author or some other addresser,
and the fiction.</gloss>
</p>
</text>
termInfoPointer
是一个指向<gloss xml:id="TDPV">
元素的 XPath 表达式。
我使用 LINQ-to-XML 来选择它。
XElement term = ...;
object value = term.XPathEvaluate("id(@def)");
我得到以下异常:System.NotSupportedException: This XPathNavigator does not support IDs.
我找不到这个问题的解决方案,所以我尝试id()
用其他表达式替换:
//*[@xml:id='TDPV'] // works, but I need to use @def
//*[@xml:id=@def]
//*[@xml:id=@def/text()]
//*[@xml:id=self::node()/@def/text()]
但这些都不起作用。
有没有办法id()
用另一个表达式实现或替换它?
我更喜欢不涉及替换id()
另一个表达式的解决方案/解决方法,因为这个表达式可能很复杂,例如id(@def) | id(//*[@attr="(id(@abc()))))))"])
.