节点以相同文本开头的Xquery节点值

时间:2010-09-13 13:39:58

标签: xquery startswith nodename

如何创建xquery以选择节点名称以某些文本开头的节点值。例如文件

<doc>
   <cpv1>Value1</cpv1>
   <cpv2>Value2</cpv2>
   <cpv3>Value3</cpv3>
   <zzz>Hello world!</zzz>
</doc>

它应该得到Value1,Value2,Value3

3 个答案:

答案 0 :(得分:3)

// doc / * [fn:starts-with(fn:local-name(),'cpv')] / text()

答案 1 :(得分:3)

因此,DocumentRequest节点包含Alias节点。我选择所有以前缀val开头的Alias节点。

<ArrayOfDocumentRequest>
    <DocumentRequest>
        <Alias>
            prefix1_OtherText
        </Alias>
    </DocumentRequest>
    <DocumentRequest>
        <Alias>
            prefix2_OtherText
        </Alias>
    </DocumentRequest>
</ArrayOfDocumentRequest>

<F_PREFIXLIST>
    <prefixes>
        <p>prefix1</p>
        <p>prefix2</p>
        <p>prefix3</p>
    </prefixes>
</F_PREFIXLIST>

for $i in /ArrayOfDocumentRequest
    for $p in $F_PREFIXLIST/prefixes/p                 
        return $i/DocumentRequest/Alias[fn:starts-with(text(), $p/text())]

答案 2 :(得分:1)

这是一个xpath表达式,它给出了Value1,Value2,Value3:     // * [substring(text(),1,5)=“Value”] / text()