我有以下xml,我无法使用xmlquery获取LocationOfNode。有什么建议怎么办?请参阅以下示例,了解我要实现的目标。
<data>
<type id="01" desc="Doctors">
<type id="02" desc="Private Hospital">
<type id="03" desc="John"></type>
<type id="04" desc="James"></type>
</type>
<type id="05" desc="Public Hospital">
<type id="06" desc="Jacob"></type>
<type id="07" desc="Joseph"></type>
</type>
</type>
<type id="08" desc="Actors">
........
</type>
</data>
示例:
如果我的输入是:07
预期产出是:医生/公立医院/约瑟夫
我正在尝试将以下xmlpath与xmlquery
一起使用SELECT XMLQuery(
'//*[@id="07"]/ancestor::*[@id="01"][1]'
PASSING MYXMLClob RETURNING CONTENT
) "myXMLQuery"
FROM myTable
答案 0 :(得分:0)
根据您的预期输出,您似乎正在尝试根据从中获取的结果验证您的xpath。在这种情况下,您已经知道了预期的位置,并且想要验证它的绝对路径,但仅针对desc
属性。
XPath实际上并不是为返回有效查询的路径而设计的,所以在这方面使用其他东西要容易得多。但是,如果您使用XPath,则可以应用类似的解决方法:
substring(concat(//*[@id='07']/../../@desc, '/', //*[@id='07']/../@desc, '/', //*[@id='07']/@desc), 0, number(boolean(count(//*[@id='07']))) * string-length(concat(//*[@id='07']/../../@desc, '/', //*[@id='07']/../@desc, '/', //*[@id='07']/@desc))+1)
但我不会建议动态/复杂查询。