User defined xquery function with index enabled

If I use user defined xquery function, can the index be applied within the function?
trados.xsd
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by () -->
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:tns="http://ecoit.hp.com/ecg/repository/trados" targetNamespace="http://ecoit.hp.com/ecg/repository/trados" elementFormDefault="qualified">
     <complexType name="entry">
          <sequence>
               <element name="base" type="string"/>
               <element name="translation" maxOccurs="unbounded">
                    <complexType>
                         <simpleContent>
                              <extension base="string">
                                   <attribute name="lang"/>
                              </extension>
                         </simpleContent>
                    </complexType>
               </element>
          </sequence>
          <attribute name="xpath" type="string" use="required" xdb:SQLName="XPATH"/>
          <attribute name="locator" type="string" use="required"/>
     </complexType>
     <simpleType name="languages">
          <list itemType="string"/>
     </simpleType>
     <element name="trados" xdb:defaultTable="ECG_REP_TRADOS_TAB" xdb:tableProps="VARRAY XMLDATA.ENTRY STORE AS TABLE ECG_REP_TRADOS_ENTRY_TAB ((PRIMARY KEY (NESTED_TABLE_ID, SYS_NC_ARRAY_INDEX$)) ORGANIZATION INDEX OVERFLOW)">
          <complexType>
               <sequence>
                    <element name="entry" type="tns:entry" minOccurs="0" maxOccurs="unbounded" xdb:SQLName="ENTRY"/>
               </sequence>
               <attribute name="cid" type="string"/>
               <attribute name="path" type="string"/>
               <attribute name="lang" type="string"/>
               <attribute name="langs" type="tns:languages"/>
               <attribute name="oldversion" type="string"/>
          </complexType>
     </element>
</schema>
CREATE INDEX ECG_REP_ENTRY_XPATH_IDX ON ECG_REP_TRADOS_ENTRY_TAB ("XPATH", "NESTED_TABLE_ID")
eco_category.xsd
<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2008 (http://www.altova.com) by Jan-Erik Pedersen (HEWLETT PACKARD) -->
<!--W3C Schema generated by XMLSpy v2007 (http://www.altova.com) by Scott Dismukes (Hewlett Packard)-->
<schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:tns="http://ecoit.hp.com/ecg/repository/eco/category" xmlns:cns="http://ecoit.hp.com/ecg/repository/types" targetNamespace="http://ecoit.hp.com/ecg/repository/eco/category" elementFormDefault="qualified">
     <import namespace="http://ecoit.hp.com/ecg/repository/types" schemaLocation="../types.xsd"/>
     <complexType name="productFamilies">
          <sequence>
               <element name="productFamily" type="tns:productFamily" minOccurs="0" maxOccurs="unbounded"/>
               <element name="product" type="tns:product" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
          <attribute name="lang" use="required" xdb:SQLName="LANG">
               <simpleType>
                    <restriction base="string">
                         <length value="5"/>
                    </restriction>
               </simpleType>
          </attribute>
          <attribute name="version" use="required" xdb:SQLName="VERSION">
               <simpleType>
                    <restriction base="string">
                         <maxLength value="100"/>
                    </restriction>
               </simpleType>
          </attribute>
     </complexType>
     <complexType name="productCategory">
          <sequence>
               <element name="label" type="cns:label"/>
               <element name="productCategory" type="tns:productCategory" minOccurs="0" maxOccurs="unbounded" xdb:defaultTable="ECG_REP_ECO_CATALOG_PC_TAB"/>
               <element name="product" type="tns:product" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
          <attribute name="id" type="cns:id" use="required"/>
     </complexType>
     <complexType name="productCategories">
          <sequence>
               <element name="productCategory" type="tns:productCategory" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
     </complexType>
     <complexType name="column">
          <sequence>
               <element name="label" type="cns:label"/>
          </sequence>
          <attribute name="id" type="cns:id" use="required"/>
     </complexType>
     <complexType name="product">
          <sequence>
               <element name="label" type="cns:label"/>
               <element name="column" type="tns:column" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
          <attribute name="id" type="cns:id" use="required"/>
     </complexType>
     <complexType name="productFamily">
          <sequence>
               <element name="label" type="cns:label"/>
               <element name="image" type="cns:image" minOccurs="0" maxOccurs="unbounded"/>
               <element name="link" type="cns:link" minOccurs="0" maxOccurs="unbounded"/>
               <element name="column" type="tns:column" minOccurs="0" maxOccurs="unbounded"/>
               <element name="productCategories" type="tns:productCategories" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
          <attribute name="id" type="cns:id" use="required"/>
     </complexType>
     <element name="productFamilies" type="tns:productFamilies" xdb:defaultTable="ECG_REP_ECO_CATALOG_TAB"/>
</schema>
xquery
xquery version "1.0";
declare namespace typ = "http://ecoit.hp.com/ecg/repository/types";
declare namespace c = "http://ecoit.hp.com/ecg/repository/eco/category";
declare namespace t = "http://ecoit.hp.com/ecg/repository/trados";
declare variable $c := $res/c:productFamilies;
declare function local:pc($pc as element(c:productCategory), $x as xs:string) as element()
     <c:productCategory id="{$pc/@id}">
          <c:label>{data($es/t:entry[@xpath eq concat($x, "/label")]/t:translation)}</c:label>
          for $p in $pc/c:product
          return local:p($p, concat($x, "/product/[@id=", $p/@id, "]"))
          for $pcc in $pc/c:productCategory
          return local:pc($pcc, concat($x, "/productCategory[@id=", $pcc/@id, "]"))
     </c:productCategory>
declare function local:p($p as element(c:product), $x as xs:string) as element()
     <c:product id="{$p/@id}">
          <c:label>{string($es/t:entry[@xpath eq concat($x, "/label")]/t:translation)}</c:label>
          for $col in $p/c:column
          return
          <c:column id="{$col/@id}">
               <c:label>
                    let $e := $es/t:entry[@xpath eq concat($x, "/column[@id=", $col/@id, "]/label")]
                    return
                    if(exists($e)) then string($e/t:translation)
                    else $col/c:label/text()
               </c:label>
          </c:column>
     </c:product>
<c:productFamiles xsi:schemaLocation="http://ecoit.hp.com/ecg/repository/eco/category http://ecoit.hp.com/ecg/repository/eco/category.xsd http://ecoit.hp.com/ecg/repository/types http://ecoit.hp.com/ecg/repository/types.xsd" lang="{$lang/lang/text()}" version="{$c/@version}">
     for $pf in $c/c:productFamily
     let $x := concat("/productFamily[@id=", $pf/@id, "]")
     return
     <c:productFamily id="{$pf/@id}">
(:xpath index can not be applied within function:)
          <c:label>{data($es/t:entry[@xpath eq concat($x, "/label")]/t:translation)}</c:label>
          for $img in $pf/c:image
          return $img
          for $link in $pf/c:link
          return $link
          for $col in $pf/c:column
          return
          <c:column id="{$col/@id}">
               <c:label>{data($es/t:entry[@xpath eq concat($x, "/column[@id=", $col/@id, "]/label")]/t:translation)}</c:label>
          </c:column>
          for $pcs in $pf/c:productCategories
          return
          <c:productCategories>
               for $pc in $pcs/c:productCategory
               return local:pc($pc, concat($x, "/productCategories/productCategory[@id=", $pc/@id, "]"))
          </c:productCategories>
     </c:productFamily>
     for $p in $c/c:product
     return local:p($p, concat("/product[@id=", $p/@id, "]"))
</c:productFamiles>
Message was edited by:
John Lee

John
Am i missing a bit of the Xquery
In 11.1,0.6.0 I get
Elapsed: 00:00:00.04
SQL> set echo on
SQL> spool testcase.log
SQL> --
SQL> connect sys/ as sysdba
Enter password:
Connected.
SQL> set define on
SQL> set timing on
SQL> --
SQL> define USERNAME = HPECO
SQL> --
SQL> def PASSWORD = HPECO
SQL> --
SQL> def USER_TABLESPACE = USERS
SQL> --
SQL> def TEMP_TABLESPACE = TEMP
SQL> --
SQL> drop user &USERNAME cascade
  2  /
old   1: drop user &USERNAME cascade
new   1: drop user HPECO cascade
User dropped.
Elapsed: 00:00:18.12
SQL> grant create any directory, drop any directory, connect, resource, alter session, create view to &USERNAME identified by &PASSW
ORD
  2  /
old   1: grant create any directory, drop any directory, connect, resource, alter session, create view to &USERNAME identified by &P
ASSWORD
new   1: grant create any directory, drop any directory, connect, resource, alter session, create view to HPECO identified by HPECO
Grant succeeded.
Elapsed: 00:00:00.03
SQL> alter user &USERNAME default tablespace &USER_TABLESPACE temporary tablespace &TEMP_TABLESPACE
  2  /
old   1: alter user &USERNAME default tablespace &USER_TABLESPACE temporary tablespace &TEMP_TABLESPACE
new   1: alter user HPECO default tablespace USERS temporary tablespace TEMP
User altered.
Elapsed: 00:00:00.00
SQL> connect &USERNAME/&PASSWORD
Connected.
SQL> --
SQL> alter session set events ='19027 trace name context forever, level 0x800'
  2  /
Session altered.
Elapsed: 00:00:00.00
SQL> --
SQL> declare
  2    xmlschema xmltype := XMLTYPE(
  3  '<?xml version="1.0" encoding="UTF-8"?>
  4  <!-- edited with XMLSpy v2008 (http://www.altova.com) by Jan-Erik Pedersen (HEWLETT PACKARD) -->
  5  <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:tns="http://ecoit.hp.com/ecg/rep
ository/types" targetNamespace="http://ecoit.hp.com/ecg/repository/types" elementFormDefault="qualified">
  6     <complexType name="item">
  7             <simpleContent>
  8                     <extension base="tns:content">
  9                             <attribute name="id" type="tns:id" use="required"/>
10                     </extension>
11             </simpleContent>
12     </complexType>
13     <complexType name="items">
14             <sequence>
15                     <element name="item" type="tns:item" maxOccurs="unbounded"/>
16             </sequence>
17             <attribute name="id" type="tns:id" use="required"/>
18     </complexType>
19     <complexType name="mappings">
20             <sequence>
21                     <element name="item" type="tns:item" minOccurs="0" maxOccurs="unbounded"/>
22                     <element name="items" type="tns:items" minOccurs="0" maxOccurs="unbounded"/>
23             </sequence>
24     </complexType>
25     <complexType name="local">
26             <sequence>
27                     <element name="common">
28                             <complexType>
29                                     <sequence>
30                                             <element name="texts" type="tns:mappings"/>
31                                             <element name="images" type="tns:mappings" minOccurs="0"/>
32                                     </sequence>
33                             </complexType>
34                     </element>
35                     <element name="section" minOccurs="0" maxOccurs="unbounded">
36                             <complexType>
37                                     <sequence>
38                                             <element name="texts" type="tns:mappings"/>
39                                             <element name="images" type="tns:mappings" minOccurs="0"/>
40                                     </sequence>
41                                     <attribute name="id" use="required">
42                                             <simpleType>
43                                                     <restriction base="string">
44                                                             <maxLength value="32"/>
45                                                     </restriction>
46                                             </simpleType>
47                                     </attribute>
48                             </complexType>
49                     </element>
50             </sequence>
51             <attribute name="lang" use="required" xdb:SQLName="LANG">
52                     <simpleType>
53                             <restriction base="string">
54                                     <length value="5"/>
55                             </restriction>
56                     </simpleType>
57             </attribute>
58     </complexType>
59     <complexType name="link">
60             <sequence>
61                     <element name="url" type="tns:url"/>
62                     <element name="label" type="tns:label"/>
63                     <element name="image" type="tns:image" minOccurs="0"/>
64             </sequence>
65             <attribute name="id" type="tns:id"/>
66     </complexType>
67     <complexType name="image">
68             <sequence>
69                     <element name="url" type="string"/>
70                     <element name="label" type="tns:label" minOccurs="0"/>
71             </sequence>
72             <attribute name="id" type="tns:id" use="optional"/>
73     </complexType>
74     <simpleType name="id">
75             <restriction base="string">
76                     <maxLength value="100"/>
77             </restriction>
78     </simpleType>
79     <simpleType name="label">
80             <restriction base="string">
81                     <maxLength value="200"/>
82             </restriction>
83     </simpleType>
84     <simpleType name="content">
85             <restriction base="string">
86                     <maxLength value="4000"/>
87             </restriction>
88     </simpleType>
89     <simpleType name="url">
90             <restriction base="string">
91                     <maxLength value="256"/>
92             </restriction>
93     </simpleType>
94  </schema>');
95  begin
96    dbms_xmlschema.registerSchema
97    (
98        schemaurl => 'http://ecoit.hp.com/ecg/repository/types.xsd'
99       ,schemadoc => xmlschema
100       ,local     => TRUE
101       ,genBean   => false
102       ,genTypes  => TRUE
103       ,genTables => TRUE
104       ,ENABLEHIERARCHY => DBMS_XMLSCHEMA.ENABLE_HIERARCHY_NONE
105    );
106  end;
107  /
PL/SQL procedure successfully completed.
Elapsed: 00:00:01.35
SQL>
SQL> declare
  2    xmlschema xmltype := XMLTYPE(
  3  '<?xml version="1.0" encoding="UTF-8"?>
  4  <!-- edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by  () -->
  5  <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:tns="http://ecoit.hp.com/ecg/rep
ository/trados" targetNamespace="http://ecoit.hp.com/ecg/repository/trados" elementFormDefault="qualified">
  6     <complexType name="entry">
  7             <sequence>
  8                     <element name="base" type="string"/>
  9                     <element name="translation" maxOccurs="unbounded">
10                             <complexType>
11                                     <simpleContent>
12                                             <extension base="string">
13                                                     <attribute name="lang"/>
14                                             </extension>
15                                     </simpleContent>
16                             </complexType>
17                     </element>
18             </sequence>
19             <attribute name="xpath" type="string" use="required" xdb:SQLName="XPATH"/>
20             <attribute name="locator" type="string" use="required"/>
21     </complexType>
22     <simpleType name="languages">
23             <list itemType="string"/>
24     </simpleType>
25     <element name="trados" xdb:defaultTable="ECG_REP_TRADOS_TAB" xdb:tableProps="VARRAY XMLDATA.ENTRY STORE AS TABLE ECG_REP_TRA
DOS_ENTRY_TAB ((PRIMARY KEY (NESTED_TABLE_ID, SYS_NC_ARRAY_INDEX$)) ORGANIZATION INDEX OVERFLOW)">
26             <complexType>
27                     <sequence>
28                             <element name="entry" type="tns:entry" minOccurs="0" maxOccurs="unbounded" xdb:SQLName="ENTRY"/>
29                     </sequence>
30                     <attribute name="cid" type="string"/>
31                     <attribute name="path" type="string"/>
32                     <attribute name="lang" type="string"/>
33                     <attribute name="langs" type="tns:languages"/>
34                     <attribute name="oldversion" type="string"/>
35             </complexType>
36     </element>
37  </schema>');
38  begin
39    dbms_xmlschema.registerSchema
40    (
41        schemaurl => 'http://ecoit.hp.com/ecg/repository/trados.xsd'
42       ,schemadoc => xmlschema
43       ,local     => TRUE
44       ,genBean   => false
45       ,genTypes  => TRUE
46       ,genTables => TRUE
47       ,ENABLEHIERARCHY => DBMS_XMLSCHEMA.ENABLE_HIERARCHY_NONE
48    );
49  end;
50  /
PL/SQL procedure successfully completed.
Elapsed: 00:00:00.68
SQL> declare
  2    xmlschema xmltype := XMLTYPE(
  3  '<?xml version="1.0" encoding="UTF-8"?>
  4  <!-- edited with XMLSpy v2008 (http://www.altova.com) by Jan-Erik Pedersen (HEWLETT PACKARD) -->
  5  <!--W3C Schema generated by XMLSpy v2007 (http://www.altova.com) by Scott Dismukes (Hewlett Packard)-->
  6  <schema xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xdb="http://xmlns.oracle.com/xdb" xmlns:tns="http://ecoit.hp.com/ecg/rep
ository/eco/category" xmlns:cns="http://ecoit.hp.com/ecg/repository/types" targetNamespace="http://ecoit.hp.com/ecg/repository/eco/c
ategory" elementFormDefault="qualified">
  7     <import namespace="http://ecoit.hp.com/ecg/repository/types" schemaLocation="http://ecoit.hp.com/ecg/repository/types.xsd"/>
  8     <complexType name="productFamilies">
  9             <sequence>
10                     <element name="productFamily" type="tns:productFamily" minOccurs="0" maxOccurs="unbounded"/>
11                     <element name="product" type="tns:product" minOccurs="0" maxOccurs="unbounded"/>
12             </sequence>
13             <attribute name="lang" use="required" xdb:SQLName="LANG">
14                     <simpleType>
15                             <restriction base="string">
16                                     <length value="5"/>
17                             </restriction>
18                     </simpleType>
19             </attribute>
20             <attribute name="version" use="required" xdb:SQLName="VERSION">
21                     <simpleType>
22                             <restriction base="string">
23                                     <maxLength value="100"/>
24                             </restriction>
25                     </simpleType>
26             </attribute>
27     </complexType>
28     <complexType name="productCategory">
29             <sequence>
30                     <element name="label" type="cns:label"/>
31                     <element name="productCategory" type="tns:productCategory" minOccurs="0" maxOccurs="unbounded" xdb:defaultTa
ble="ECG_REP_ECO_CATALOG_PC_TAB"/>
32                     <element name="product" type="tns:product" minOccurs="0" maxOccurs="unbounded"/>
33             </sequence>
34             <attribute name="id" type="cns:id" use="required"/>
35     </complexType>
36     <complexType name="productCategories">
37             <sequence>
38                     <element name="productCategory" type="tns:productCategory" minOccurs="0" maxOccurs="unbounded"/>
39             </sequence>
40     </complexType>
41     <complexType name="column">
42             <sequence>
43                     <element name="label" type="cns:label"/>
44             </sequence>
45             <attribute name="id" type="cns:id" use="required"/>
46     </complexType>
47     <complexType name="product">
48             <sequence>
49                     <element name="label" type="cns:label"/>
50                     <element name="column" type="tns:column" minOccurs="0" maxOccurs="unbounded"/>
51             </sequence>
52             <attribute name="id" type="cns:id" use="required"/>
53     </complexType>
54     <complexType name="productFamily">
55             <sequence>
56                     <element name="label" type="cns:label"/>
57                     <element name="image" type="cns:image" minOccurs="0" maxOccurs="unbounded"/>
58                     <element name="link" type="cns:link" minOccurs="0" maxOccurs="unbounded"/>
59                     <element name="column" type="tns:column" minOccurs="0" maxOccurs="unbounded"/>
60                     <element name="productCategories" type="tns:productCategories" minOccurs="0" maxOccurs="unbounded"/>
61             </sequence>
62             <attribute name="id" type="cns:id" use="required"/>
63     </complexType>
64     <element name="productFamilies" type="tns:productFamilies" xdb:defaultTable="ECG_REP_ECO_CATALOG_TAB"/>
65  </schema>
66  ');
67  begin
68    dbms_xmlschema.registerSchema
69    (
70        schemaurl => 'http://ecoit.hp.com/ecg/repository/eco/category.xsd'
71       ,schemadoc => xmlschema
72       ,local     => TRUE
73       ,genBean   => false
74       ,genTypes  => TRUE
75       ,genTables => TRUE
76       ,ENABLEHIERARCHY => DBMS_XMLSCHEMA.ENABLE_HIERARCHY_NONE
77    );
78  end;
79  /
PL/SQL procedure successfully completed.
Elapsed: 00:00:01.65
SQL> CREATE INDEX ECG_REP_ENTRY_XPATH_IDX ON ECG_REP_TRADOS_ENTRY_TAB ("XPATH", "NESTED_TABLE_ID")
  2  /
Index created.
Elapsed: 00:00:00.01
SQL> set pages 0 lines 160
SQL> set long 10000
SQL> --
SQL> set autotrace on explain
SQL> --
SQL> xquery
  2  xquery version "1.0";
  3
  4  declare namespace typ = "http://ecoit.hp.com/ecg/repository/types";
  5  declare namespace c = "http://ecoit.hp.com/ecg/repository/eco/category";
  6  declare namespace t = "http://ecoit.hp.com/ecg/repository/trados";
  7
  8  declare variable $c := $res/c:productFamilies;
  9
10  declare function local:pc($pc as element(c:productCategory), $x as xs:string) as element() {
11     <c:productCategory id="{$pc/@id}">
12     {
13             <c:label>{data($es/t:entry[@xpath eq concat($x, "/label")]/t:translation)}</c:label>
14             ,
15             for $p in $pc/c:product
16             return local:p($p, concat($x, "/product/[@id=", $p/@id, "]"))
17             ,
18             for $pcc in $pc/c:productCategory
19             return local:pc($pcc, concat($x, "/productCategory[@id=", $pcc/@id, "]"))
20     }
21     </c:productCategory>
22  };
23
24  declare function local:p($p as element(c:product), $x as xs:string) as element() {
25     <c:product id="{$p/@id}">
26     {
27             <c:label>{string($es/t:entry[@xpath eq concat($x, "/label")]/t:translation)}</c:label>
28             ,
29             for $col in $p/c:column
30             return
31             <c:column id="{$col/@id}">
32                     <c:label>
33                     {
34                             let $e := $es/t:entry[@xpath eq concat($x, "/column[@id=", $col/@id, "]/label")]
35                             return
36                             if(exists($e)) then string($e/t:translation)
37                             else $col/c:label/text()
38                     }
39                     </c:label>
40             </c:column>
41     }
42     </c:product>
43  };
44
45  <c:productFamiles xsi:schemaLocation="http://ecoit.hp.com/ecg/repository/eco/category http://ecoit.hp.com/ecg/repository/eco/ca
tegory.xsd  http://ecoit.hp.com/ecg/repository/types  http://ecoit.hp.com/ecg/repository/types.xsd" lang="{$lang/lang/text()}" versi
on="{$c/@version}"> {
46     for $pf in $c/c:productFamily
47     let $x := concat("/productFamily[@id=", $pf/@id, "]")
48     return
49     <c:productFamily id="{$pf/@id}">
50     {
51             (:xpath index can not be applied within function:)
52             <c:label>{data($es/t:entry[@xpath eq concat($x, "/label")]/t:translation)}</c:label>
53             ,
54             for $img in $pf/c:image
55             return $img
56             ,
57             for $link in $pf/c:link
58             return $link
59             ,
60             for $col in $pf/c:column
61             return
62             <c:column id="{$col/@id}">
63                     <c:label>{data($es/t:entry[@xpath eq concat($x, "/column[@id=", $col/@id, "]/label")]/t:translation)}</c:lab
el>
64             </c:column>
65             ,
66             for $pcs in $pf/c:productCategories
67             return
68             <c:productCategories>
69             {
70                     for $pc in $pcs/c:productCategory
71                     return local:pc($pc, concat($x, "/productCategories/productCategory[@id=", $pc/@id, "]"))
72             }
73             </c:productCategories>
74     }
75     </c:productFamily>
76     ,
77     for $p in $c/c:product
78     return local:p($p, concat("/product[@id=", $p/@id, "]")) } </c:productFamiles>
79  /
ERROR:
ORA-19228: XPST0008 - undeclared identifier: prefix 'res' local-name ''
Elapsed: 00:00:00.01
SQL>

Similar Messages

  • Component Palette --- "User Defined Extension Functions" not visible

    I added a User-Defined XPath Extension Function in JDeveloper 11.1.1.3.0 --> Tools > Preferences > SOA As given here http://download.oracle.com/docs/cd/E15523_01/integration.1111/e10224/bp_appx_functs.htm#BEIHEBIJ
    But I am not able see "User Defined Extension Functions" section itself in the component palette. Do I need to enable anything for see the section.
    Can somebody help.
    Thanks

    Hi,
    I am trying to create user defined extension function in JDeveloper 10.1.3.4 to be used with the Oracle ESB.I have followed the documentation provided by the Oracle to resolve this issue without any success can you please help me in providing me the details how did you resolved this issue.
    Anticipating your earliest reply
    regards
    Narasimha

  • How can I call a stateful webservice from a user-defined XPath function?

    I'm calling a stateful webservice from a BPEL process using a PartnerLink which implements Custom Header Handler classes to handle the session state, storing the cookie as a property of the PartnerLink.
    I'd also like to call this same stateful webservice, in the same session, from a user-defined XPath function enabling me to call this from an XSL Transformation.
    Is this in any way possible? Can I access the cookie and attach it to the webservice call made by the user-defined XPath function?

    Actually, as long as the servlet returns valid javascript, you can indeed "call it" from the client. It will initiate a request and return the result to the browser.
    This example uses Perl, but it could be easily modified to go to a servlet instead.
    Note that it is only supported in DOM browsers (IE6+/NN6+/etc)
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
    <html>
    <head>
    <title> Test server-side JS </title>
    </head>
    <body>
    <script type="text/javascript">
    function checkIt(variable, value)
    var newScript = "cgi-bin/validateJS.cgi?"+variable+"="+value;
    var body = document.getElementsByTagName('body').item(0)
    var scriptTag = document.getElementById('loadScript');
    if(scriptTag) body.removeChild(scriptTag);
    script = document.createElement('script');
    script.src = newScript;
         script.type = 'text/javascript';
         script.id = 'loadScript';
         body.appendChild(script)
    </script>
    <p>Test.</p>
    <form id="f1" action="">
    <input type="text" name="t1" id="t1" onChange="checkIt(this.name, this.value)">
    </body>
    </html>
    validateJS.cgi
    #!/opt/x11r6/bin/perl
    use CGI qw(:all);
    my @valArray = split(/=/,$ENV{QUERY_STRING});
    print "Content-type: text/javascript\n\n";
    # myPass is the password
    $myPass = "foobar";
    if ("$valArray[1]" eq "$myPass")
    print "alert(\"Success!!\")";
    else
    print "alert(\"Failure!!\")";

  • XSLT Mapping - user defined Extension function

    Hi to all,
    can somebody helps me, please?
    I need an own function, that can be used by the XSL Mapper. First I have only tried the sample given in Path <BPELPM>\integration\orabpel\samples\demos\XSLMapper\ExtensionFunctions
    There is a java file with the defined functions and a xml file with the definition of this function for the mapper and last but not least a jar-file with the java class.
    I have copied the jar to <JDEV_HOME>\jdev\lib\ext directory and in JDeveloper I have added SampleExtensionFunctions.xml to Tools->Preferences->XSL Map -> "User Defined Extension Functions Config File" field. After a restart of JDeveloper I find 2 new functions in the "User Defined Extension Functions" component palette page when a XSL Map is open. That's fine.
    But if I test the mapping I get an error: "Failed to transform source XML.
    java.lang.NoSuchMethodException: For extension function, could not find method org.apache.xpath.objects.XNodeSet.replaceChar([ExpressionCotext,]#STRING, #STRING)."
    What is wrong?
    Thanks in advance of your answer
    best regard,
    uno

    Oracle XML support Extension function.
    For example:
    If we would like to import FAQDBUri.class with user-defined java functions, like TranslateDBUri(), we can write XSL file like this:
    <xsl:template match="/" xmlns:dburig="http://www.oracle.com/XSL/Transform/java/FAQDBuri">
    <xsl:variable name="urladd" select="dburig:TranslateDBUri($url)"/>

  • User Defined External Function - How to work?

    I have defined some external functions in java by following the description in
    C:\OraBPELPM_3\integration\orabpel\samples\demos\XSLMapper\ExtensionFunctions
    I can use my functions in JDeveloper, but they do not work on the Oracle BPEL engine.
    Is it enough just to place the jar-file in <OC4J_HOME>\j2ee\home\applib and add the jar-file in class-path (as described)?
    What about the xml-file specifying the functions (called SampleExtentionFunctions.xml in the documentation)?
    Should this file be copied to <OC4J_HOME>\... ?
    Here is the error message I get by running my service:
    XPath expression failed to execute.
    Error while processing xpath expression, the expression is "ora:processXSLT("TransformationInput.xsl", bpws:getVariableData("inputVariable", "request"))", the reason is java.lang.NoSuchMethodException: For extension function, could not find method org.apache.xpath.objects.XNodeSet.leadingZeros([ExpressionContext,] #NUMBER)..
    Please verify the xpath query.
    ______________ MY JAVA CODE EXAMPLE: _____________________________
    package extentionfunctions;
    This is a sample XSL Mapper User Defined Extension Functions implementation class.
    public class JavaExtensionFunctionsBpel
    * Inserts leading zeros to a text, if this starts with a digit.
    * Else the return value will be the same as the given text.
    * The return value will have the specified length.
    public static String leadingZeros(String text, int len)
    {  String retur = text;
    char c = (text == ""?'0':text.charAt(0));
    if ('0'<=c && c<='0'+9) { // Is first char a digit?
    retur = "";
    int n = len - (text == ""?0:text.length());
    for (int i=0; i<n; i++) { // Insert zeros:
    retur = '0' + retur;
    retur = retur + text;
    return retur;
    * Removes leading zeros from a text.
    public static String removeLeadingZeros(String text)
    {  String retur = text;
    int pos = 0;
    int len = (text == ""?0:text.length());
    for (int i=0; i<len; i++) {
    if (text.charAt(i)=='0') { // Is char a digit?
    pos++;
    return retur;
    public static void main(String[] args)
    { // Basic test of functions:
    int len = 5;
    String s = "1234";
    String r;
    System.out.println("leadingZeros("+s+","+len+")="+(r=leadingZeros(s,len)));
    System.out.println("removeLeadingZeros("+r+")="+removeLeadingZeros(s));
    Regards
    Flemming Als

    Flemming, it looks like somthing is wrong in the xsl that it still goes to org.apache.xpath.objects.XNodeSet package instead of yours ..
    I created a sample that illustrates the usage of this functions (even with 2 params, different types).
    Java class (com.otn.samples.xslt.CustomXSLTFunctions)
    package com.otn.samples.xslt;
    public class CustomXSLTFunctions
    <function name="extension:multiplyStringAndInt" as="number">
    <param name="base" as="String"/>
    <param name="multiplier" as="number"/>
    </function>
    public int multiplyStringAndInt (String pString, int pMultiplier)
    int base = Integer.parseInt(pString);
    return base * pMultiplier;
    XML descriptor:
    Note the types (in the java class and the xml descriptor)
    for java:base -> string and for xslt:base -> string
    for java:multiplier -> int and for xslt:multiplier -> number
    <?xml version="1.0" encoding="UTF-8"?>
    <extension-functions>
    <functions extension:multiplyStringAndInt="http://www.oracle.com/XSL/Transform/java/com.otn.samples.xslt.CustomXSLTFunctions">
    <function name="extension:multiplyStringAndInt" as="number">
    <param name="base" as="string"/>
    <param name="multiplier" as="number"/>
    </function>
    </functions>
    </extension-functions>
    Definition of variables in the process:
    (as you can see, the base is a string - I do the conversion in my method, and the return value
    is converted to a string by the engine)
    <!-- Input -->
    <element name="CustomXSLTFunctionProcessRequest">
    <complexType>
    <sequence>
    <element name="base" type="string"/>
    <element name="multiplier" type="int"/>
    </sequence>
    </complexType>
    </element>
    <!-- Output -->
    <element name="CustomXSLTFunctionProcessResponse">
    <complexType>
    <sequence>
    <element name="result" type="string"/>
    </sequence>
    </complexType>
    </element>
    Using the new function in the XSL transformation:
    - watch out for the namespace declaration (xmlns:sample="...")
    - and the usage (sample:multiplyStringAndInt)
    <xsl:stylesheet version="1.0"
    xmlns:ldap="http://schemas.oracle.com/xpath/extension/ldap"
    xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
    xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
    xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/"
    xmlns:extension="http://www.oracle.com/XSL/Transform/java/com.otn.samples.xslt.CustomXSLTFunctions"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:ora="http://schemas.oracle.com/xpath/extension"
    xmlns:ns0="http://www.w3.org/2001/XMLSchema"
    xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
    xmlns:client="http://xmlns.oracle.com/CustomXSLTFunction"
    exclude-result-prefixes="xsl plnk ns0 client ldap xp20 bpws extension ora orcl">
    <xsl:template match="/">
    <client:CustomXSLTFunctionProcessResponse>
    <client:result>
    <xsl:value-of select="extension:multiplyStringAndInt(/client:CustomXSLTFunctionProcessRequest/client:base,/client:CustomXSLTFunctionProcessRequest/client:multiplier)"/>
    </client:result>
    </client:CustomXSLTFunctionProcessResponse>
    </xsl:template>
    </xsl:stylesheet>
    Then I created a jar file with the class (and for testing the xml descriptor in it)...
    and put it into j2ee/home/applib directory
    hth clemens

  • User defined extension functions

    Hi,
    I have a requirement to create a user defined extension function.
    I followed the demo in the BPEL tutorials,and created the java function and then the extensions.xml.
    I have registered the .xml file,and have copied the .jar to jdev/extensions directory.
    Once i restart the Jdeveloper i am getting the following error.
    Severe(0,0): file:/D:/Software/Jdeveloper/jdevstudio10133/jdev/extensions/LogP1ExtensionFunctions.jar does not contain an extension manifest.
    Can anybody help me on this
    Thanks in advance
    Regards
    Ashwini

    Hi,
    I am trying to create user defined extension function in JDeveloper 10.1.3.4 to be used with the Oracle ESB.I have followed the documentation provided by the Oracle to resolve this issue without any success can you please help me in providing me the details how did you resolved this issue.
    Anticipating your earliest reply
    regards
    Narasimha

  • Help! Can I have user defined extension function?

    Under SQL Sever XML, I can write a xsl script like this:
    <msxsl:script language="JScript" implements-prefix="myfunc">
    function getvalue(nodelist,name,istag){
    var subNode=nodelist.nextNode();
    if(subNode == null) return('?');
    if(istag == '') name = '@' + name;
    var value=subNode.getElementsByTagName(name);
    return((value == null)?'':value);
    </msxsl:script>
    and I can call this function in the xsl, obviously, msxsl supported by microsoft. I know that Oracle XML support Extension function, but you can tell here that I want a user defined function while not a predefined function. Can I have such feature with Oracle XML, and How? Thanks.

    Oracle XML support Extension function.
    For example:
    If we would like to import FAQDBUri.class with user-defined java functions, like TranslateDBUri(), we can write XSL file like this:
    <xsl:template match="/" xmlns:dburig="http://www.oracle.com/XSL/Transform/java/FAQDBuri">
    <xsl:variable name="urladd" select="dburig:TranslateDBUri($url)"/>

  • PL/SQL : User defined Aggregate Functions ??

    Is it possible to create (using whatever language) a user defined aggregate function for transparent usage within sql ?
    e.g.
    select median(myField) from myTable
    or
    select empirical_expectation(myField) from myTable
    thanx in advance ..
    Tobias Oberstein

    HI,
    U can create a stored proc. (PL/SQL) for this and call as any other function.
    By using external procedure, U can create shared library in C or C++ and coonect this shared library by using external function/procedure. This will be become user-defined procedure.
    with regards,
    Boby Jose Thekkanath.

  • HowTo: Business User defining Planning Functions?

    Hi all,
    does anybody have experience with allowing Business users Defining Planning Functions (e.g. account A = account B - account C) and could share a rough concept? I basically think about Fox-Formulas, but this includes issues with authorization in productive system.
    Are there any solutions with translating free-text-Formulas (e.g. defined in an Attribut or flatfile, see scenario below) into ABAP or FOX Code?
    Thanks for sharing your ideas and experiences,
    Best regards,
    Michael
    Our scenario:
    - Business users are responsible (and authorized) for specific local Companies.
    - Values of the Chart of accounts are typed in into a input-ready query.
    - for Dummy accounts (e.g. Z01) of the local companies no planning is allowed in the plan version, but business users should be allowed to define a specific formula, such as:
    =  + *
    - these functions run at the end of the planning process in a separate planning version for translating local data into global accounts
    - At best these functions should be maintained as an attribut of the dummy accounts or as free text in a text field next to the account in the plan query, but how to translate the formula into a Fox or ABAP formula without great effort?
    - When using FOX, the issue is, that it is a different GUI and there would have to be a function for each company (there will come new companies) and so on....

    Hi Matthias,
    thanks for the post. The problem isnt of keying in the formula isn't that big, this can for example be done in an attribute Char 60 with Flatfile upload for each planning process.
    My problem is more
    a) if I use FOX Formulas - the usage of fox formulas in productive system for Business User
    I still think that using FOX formulas is the easiest thing to implement, but probably the hardest to run and maintain life. Are there any best practises / how tos about authorization and IP architecture for that?
    b) if I use formulas as Text - the formula parsing itself and the communication with the planning function
    Here you gave me the hint of using customer defined planning functions. That's probably the best thing. I first thought about about a formula parser that is called by fox. Still, parsing free text into structured formulas isn't easy, is it? Are there any how-tows?
    best regards,
    Michael

  • How can I use User-Defined Aggregate Functions in Timesten 11? such as ODCI

    Hi
    we are using Timesten 11 version and as per the documentation, it doesn't support User-Defined Aggregate Functions.
    So we are looking for alternatives to do it. Could you please provide your expert voice on this.
    Thanks a lot.
    As the following:
    create or replace type strcat_type as object (
    cat_string varchar2(32767),
    static function ODCIAggregateInitialize(cs_ctx In Out strcat_type) return number,
    member function ODCIAggregateIterate(self In Out strcat_type,value in varchar2) return number,
    member function ODCIAggregateMerge(self In Out strcat_type,ctx2 In Out strcat_type) return number,
    member function ODCIAggregateTerminate(self In Out strcat_type,returnValue Out varchar2,flags in number) return
    number
    How can I use User-Defined Aggregate Functions in Timesten 11? such as ODCIAggregateInitialize ?

    Dear user6258915,
    You absolutely right, TimesTen doesnt support object types (http://docs.oracle.com/cd/E13085_01/doc/timesten.1121/e13076/plsqldiffs.htm) and User-Defined Aggregate Functions.
    Is it crucial for your application? Could you rewrite this functionality by using standart SQL or PL/SQL?
    Best regards,
    Gennady

  • Please help for User defined extension functions

    the tutorial given for extension functions doesn't work as well as our new functions
    even though i follow all the given steps and see the functions in my user defined extension functions tab in xslt map.
    all the target nodes that use the extension function disappear in the resulted target xml.
    please help.

    have you compiled your java file and uploaded the jar file(containg the .class file and the Manifest.MF file) in the <OC4J_HOME>\j2ee\home\applib directory and then restarted the server??

  • User Defined Extension functions XML file

    Hi,
    Can we define exception In custom XSLT function XML file.
    Like i have following Custom XSLT function XML-
    <?xml version="1.0" encoding="UTF-8"?>
    <extension-functions>
    <functions xmlns:uppercase="http://www.oracle.com/XSL/Transform/java/oracle.Uppercase">
    <function name="uppercase:GetName" as="string">
    <param name="fname" as="string"/>
    <param name="lname" as="string"/>
    </function>
    </functions>
    </extension-functions>
    So in case i need to throw an exception in my java function GetName so how can i define that in XML?
    Please give some suggestion?
    Thanks.

    Hi,
    Thanks for your reply. When I created extensions.xml (as advised by you) and tried specifying it as User Defined Extension Functions Config file, I get the following error:
    Invalid User Extension Functions Config File
    Invalid value 'object' for attribute:'as' line 5 column 52
    i.e. the following line:
    <function name="extensions:getMSPDate" as="object">
    Any pointers on what will be the correct value for attribute 'as' for element 'function'?
    Also, what is the default namespace being used in the extensions.xml?
    Is there a link for more documentation on the format for extensions.xml?

  • User-Defined Aggregate Function in oracle

    Somebody knows if in oracle 10g is possible to create a User-Defined Aggregate Function?
    Sometingh like my_sum, that aggregate the values in a way that i want...
    select manager, my_sum(salary)
    group by manager
    In internet i've found rellay notingh for oracle 10g...can somebody help me? Thank's in advance!

    Thank's to everybody!!! I've made my custom function sum_distinct
    create or replace type AggregateCD as object
    (  nb                   number,
         ListOfDistinctValue  clob,
        static               function ODCIAggregateInitialize(sctx IN OUT AggregateCD) return number,
        member               function ODCIAggregateIterate(self IN OUT AggregateCD, value IN VARCHAR2) return number,
         member               function ODCIAggregateTerminate(self IN AggregateCD, returnValue OUT number, flags IN number) return number,
        member               function ODCIAggregateMerge(self IN OUT AggregateCD, ctx2 IN AggregateCD) return number
    create or replace type body AggregateCD is
       static function ODCIAggregateInitialize(sctx IN OUT AggregateCD) return number is
         begin
             sctx := AggregateCD(0,null);
             return ODCIConst.Success;
        end;
        member function ODCIAggregateIterate(self IN OUT AggregateCD, value IN VARCHAR2) return number is
            ListOfValue CLOB:=self.ListOfDistinctValue ;
         begin
             self.nb:=self.nb+to_number(substr(value , INSTR(value, ';', 1, 1)+1 ,length(value)));
            return ODCIConst.Success;
        end;
        member function ODCIAggregateTerminate(self IN AggregateCD, returnValue OUT number, flags IN number) return number is
         begin
              returnValue := self.nb;
              return ODCIConst.Success;
        end;
         member function ODCIAggregateMerge(self IN OUT AggregateCD, ctx2 IN AggregateCD) return number is
         begin
             self.nb := ctx2.nb;
             return ODCIConst.Success;
        end;
      end;
    CREATE OR REPLACE FUNCTION sum_distinct (input VARCHAR2) RETURN number
      PARALLEL_ENABLE AGGREGATE USING AggregateCD;you can use so:
    select sum_distinct(distinct t.primary_key||';'||t.import)
    from table1 t, table2_with_bad_join
    it's the same of
    select sum(t.import)
    from table 1

  • 8i personal : error when Create user defined aggregate function

    Hi,
    I have problem on creating user defined aggregate function.
    I try to create the sample aggregate function "SecondMax" from 9i developer guide(append at the end of this post).
    It's work to create object type and the type body, but
    there is error when I create the aggregate function..
    "CREATE FUNCTION SecondMax (input NUMBER) RETURN NUMBER
    PARALLEL_ENABLE AGGREGATE USING SecondMaxImpl;"
    I am using 8i personal now.. is that the syntax of create function in 9i is different from that in 8i?
    Example: Creating and Using a User-Defined Aggregate
    This example illustrates creating a simple user-defined aggregate function SecondMax() that returns the second-largest value in a set of numbers.
    Creating SecondMax()
    Implement the type SecondMaxImpl to contain the ODCIAggregate routines.
    create type SecondMaxImpl as object
    max NUMBER, -- highest value seen so far
    secmax NUMBER, -- second highest value seen so far
    static function ODCIAggregateInitialize(sctx IN OUT SecondMaxImpl)
    return number,
    member function ODCIAggregateIterate(self IN OUT SecondMaxImpl,
    value IN number) return number,
    member function ODCIAggregateTerminate(self IN SecondMaxImpl,
    returnValue OUT number, flags IN number) return number,
    member function ODCIAggregateMerge(self IN OUT SecondMaxImpl,
    ctx2 IN SecondMaxImpl) return number
    Implement the type body for SecondMaxImpl.
    create or replace type body SecondMaxImpl is
    static function ODCIAggregateInitialize(sctx IN OUT SecondMaxImpl)
    return number is
    begin
    sctx := SecondMaxImpl(0, 0);
    return ODCIConst.Success;
    end;
    member function ODCIAggregateIterate(self IN OUT SecondMaxImpl, value IN number)
    return number is
    begin
    if value > self.max then
    self.secmax := self.max;
    self.max := value;
    elsif value > self.secmax then
    self.secmax := value;
    end if;
    return ODCIConst.Success;
    end;
    member function ODCIAggregateTerminate(self IN SecondMaxImpl, returnValue OUT
    number, flags IN number) return number is
    begin
    returnValue := self.secmax;
    return ODCIConst.Success;
    end;
    member function ODCIAggregateMerge(self IN OUT SecondMaxImpl, ctx2 IN
    SecondMaxImpl) return number is
    begin
    if ctx2.max > self.max then
    if ctx2.secmax > self.secmax then
    self.secmax := ctx2.secmax;
    else
    self.secmax := self.max;
    end if;
    self.max := ctx2.max;
    elsif ctx2.max > self.secmax then
    self.secmax := ctx2.max;
    end if;
    return ODCIConst.Success;
    end;
    end;
    Create the user-defined aggregate.
    CREATE FUNCTION SecondMax (input NUMBER) RETURN NUMBER
    PARALLEL_ENABLE AGGREGATE USING SecondMaxImpl;
    Using SecondMax()
    SELECT SecondMax(salary), department_id
    FROM employees
    GROUP BY department_id
    HAVING SecondMax(salary) > 9000;

    This could be a x64/x86 problem. Try following this thread
    [GetCompanyService|GetCompanyService] and recompile your code for the platform you need.

  • User defined table/object with system form

    Hi,
    I added an extra tab on the invoice form. But I want to save the info in another user defined object.
    The new fields are coupled on the new added dbdatasrource. But it seems like the new added datasource is as much restricted than other dbdatasources on a system form (even if I have added them).
    I see no way to let this thing work though the datasources or registered object (because a registered object is not accessible with the DI API)
    Does anyone has a suggestion to program this?
    greetz
    Eddy

    Hi Filipe,
    I created a usertable of the document type and I created an UDO for it. And I added the fields on an extra tab on the invoice document. Therefore I have to add an extra dbdatasource to the invoice document and I binded the fields to the new added datasource.
    When I started to work with the fields and the dbdatasource I noticed that I couldn't use functions like InsertRecord and setvalue, because it is restricted. And I  didn't expect this because I added the datasource myself.
    Greetz
    Eddy

Maybe you are looking for

  • Style sheet not working in Internet Explorer

    Hello Experts Please have a look at this. It is working fine in Firefox.http://www.themildmayarms.com Here is my Style Sheet linkhttp://www.themildmayarms.com/index.css The style sheet is definitely uploaded. The other pages have a different style sh

  • My iphone 4 quit like it was dead and i can't get it to do anything....

    how can i find out if this phone can be saved?

  • Since upgrading to iOS7 I can't get rid of the number of emails it says I have

    I still can't clear my emails.  They have all been read, but it shows I still have 22 messages.  Going into messages and hitting Edit and then tagging each one isn't the issue.  That didn't help. Also, since upgrading to the iOS7 everytime a call com

  • How to get nodes from nlp

    Hello all! My mean problem is that I dont know how to extract nodes from GrammaticalStructure. I am using englishPCFG.ser in java netbeans. My target is o know the quality of the screen like: the screen of iphone 4 is great. I want to extract screen

  • ITunes import problems

    I have upgraded to iTunes 8.1 via the Software Updater on both my Macbook and work HP Laptop. On both, I've had real troubles getting iTunes to import music from my Time Capsule (around 600GB). While it recognises the files, I had it running all nigh