2012-07-24 5 views
0

Je suis en train de remplacer deux barres obliques inverses avec une seule transformation au sein de XQuery Oracle Service Bus avec la fonction remplacer:XQuery remplacer problème dans Oracle Service Bus

let $ str: = remplacer ($ srcStr, « \\ \\ "," \\ "), où $ srcStr contient la valeur"^\\ d {1,4} $ "

Mais pour une raison quelconque, cela ne fonctionne pas. Le résultat est stil "^ \\ d {1,4} $"

Lorsque j'appelle la même fonction par ex. Altova XmlSpy cela fonctionne très bien: remplacer ("^ \\ d {1,4} $", "\\\\", "\\") entraîne^\ d {1,4}

Quelqu'un at-il une idée pourquoi OSB ne correspond pas aux barres obliques inverses dans la chaîne source? Quelle pourrait être une solution de contournement?

Répondre

2

Ceci est un bug.

Vous pouvez écrire une expression rationnelle personnalisée pour contourner ce bogue.

declare function xf:replace_test($e as element()) as xs:string { 
    let $str := replace("junk (\)\ junk", ".*\\.*", "\$1") 
    return $str 
}; 
declare variable $e as element() external; 
xf:replace_test($e)` 
+0

Salut la navette! Vous avez raison, c'est un bug du processeur xquery intégré dans OSB. Pourriez-vous expliquer ce que fait votre fonction replace_test?)) –

Questions connexes