2015-04-12 30 views
0

如何將XML結果替換爲不同的值大小寫?使用Xquery替換XML Distinct-Values Oracle Service Bus 11G

我得到的值groupId但我想將其替換爲groupName,客戶可以讀取它,而不僅僅是Number。

<TestList> 
 
    <Test> 
 
    <number>1000</number> 
 
    <groupId>2323</groupId> 
 
    </Test> 
 
    <Test> 
 
    <number>2000</number> 
 
    <groupId>3434</groupId> 
 
    </Test> 
 
    <Test> 
 
    <number>3000</number> 
 
    <groupId>2323</groupId> 
 
    </Test> 
 
    <Test> 
 
    <number>4000</number> 
 
    <groupId>4444</groupId> 
 
    </Test> 
 
</TestList>

預期結果

<TestList> 
 
    <Test> 
 
    <number>1000</number> 
 
    <groupId>Group 1</groupId> 
 
    </Test> 
 
    <Test> 
 
    <number>2000</number> 
 
    <groupId>Group 2</groupId> 
 
    </Test> 
 
    <Test> 
 
    <number>3000</number> 
 
    <groupId>Group 1</groupId> 
 
    </Test> 
 
    <Test> 
 
    <number>4000</number> 
 
    <groupId>Group 3</groupId> 
 
    </Test> 
 
</TestList>

感謝,

ANDREE

回答

0

在11g中,我認爲您可以通過擴展使用BEA組。試試這樣的:

declare variable $data := 
<TestList> 
    <Test> 
    <number>1000</number> 
    <groupId>2323</groupId> 
    </Test> 
    <Test> 
    <number>2000</number> 
    <groupId>3434</groupId> 
    </Test> 
    <Test> 
    <number>3000</number> 
    <groupId>2323</groupId> 
    </Test> 
    <Test> 
    <number>4000</number> 
    <groupId>4444</groupId> 
    </Test> 
</TestList>; 

<TestList>{ 
    let $groups := 
    for $test in $data/Test 
    group $test as $testGroup by $test/groupId as $groupId 
    return 
     <group>{$testGroup}</group> 
    for $group at $pos in $groups, 
     $test in $group/Test 
    return 
    <Test> 
     {$test/number} 
     <groupId>{$pos}</groupId> 
    </Test> 
}</TestList> 
相關問題