Значения узла Xquery, где узел начинается с того же текста - PullRequest
0 голосов
/ 13 сентября 2010

Как создать xquery для выбора значений узлов, где имя узла начинается с некоторого текста.например, документ

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

Должен получить значение1, значение2, значение3

Ответы [ 3 ]

3 голосов
/ 13 сентября 2010

// doc / * [fn: начинается с (fn: local-name (), 'cpv')] / text ()

3 голосов
/ 20 января 2012

Таким образом, узлы DocumentRequest содержат узлы Alias.Я выбираю все узлы Alias, которые начинаются с префикса val.

<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())]
1 голос
/ 13 сентября 2010

Вот выражение xpath, которое дало вам Value1, Value2, Value3: // * [substring (text (), 1,5) = "Value"] / text ()

...