Extract parent and child data from an XML sequence?
I'm very new to XML, so please excuse me if I use incorrect terminology here. I've been given a schema definition (.xsd), and several sample xml files from which I need to extract data and insert it into relational tables. I've made some progress in that I've been able to hack enough to modify and register the schema and get the XML into the database both through the registered schema and into a separate table with an XMLType column. I've also been able to use the isSchemaValid function to validate the XML against the schema definition, and I've been able to extract some of the simple data elements via the extractValue function. My problem is with extracting some of the nested data - that is, extracting parent node elements and child node elements together where there is more than one value in the child node. BTW. I'm on Oracle 10gR2.
Following are the .xsd and and sample XML. Specifically, I need to select the NPI value from the PROVIDER node, and associate it with each of the CODE values from the SPECIALTIES node (which is part of the PROVIDER node).
Here's the .xsd (sorry, it's very long). The only modifications I've made to the schema definition are to add the xdb namespace and the "xdb:defaultTable="HMOSCHEMA" snippet:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xdb="http://xmlns.oracle.com/xdb" version="1.0">
<xsd:element name="HMO" xdb:defaultTable="HMOSCHEMA">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="HMO_GENERAL_INFORMATION" />
<xsd:element ref="PROVIDERS" />
<xsd:element ref="FACILITIES" minOccurs="0"
maxOccurs="1" />
</xsd:sequence>
<xsd:attribute name="DATE" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="HMO_GENERAL_INFORMATION">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="MCO_ID_LIST" minOccurs="1" maxOccurs="1" />
<xsd:element ref="HMO_WEBSITE_ADDRESS" minOccurs="1"
maxOccurs="1" />
<xsd:element ref="HMO_SPECIAL_SERVICES" minOccurs="0"
maxOccurs="1" />
<xsd:element ref="HMO_DAILY_CONTACT_EMAIL_ADDRESS"
minOccurs="1" maxOccurs="1" />
<xsd:element ref="HMO_MONTHLY_CONTACT_EMAIL_ADDRESS"
minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="PROVIDERS">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" ref="PROVIDER" />
</xsd:sequence>
<xsd:attribute name="RECORDS" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="PROVIDER">
<xsd:complexType>
<xsd:sequence minOccurs="1" maxOccurs="unbounded">
<xsd:element ref="NPI" minOccurs="1" maxOccurs="1" />
<xsd:element ref="FIRST_NAME" minOccurs="1"
maxOccurs="1" />
<xsd:element ref="LAST_NAME" minOccurs="1"
maxOccurs="1" />
<xsd:element ref="MIDDLE_INITIAL" minOccurs="0"
maxOccurs="1" />
<xsd:element ref="GENDER" minOccurs="1" maxOccurs="1" />
<xsd:element ref="LINE_1_ADDRESS" minOccurs="1"
maxOccurs="1" />
<xsd:element ref="LINE_2_ADDRESS" minOccurs="0"
maxOccurs="1" />
<xsd:element ref="CITY" minOccurs="1" maxOccurs="1" />
<xsd:element ref="STATE" minOccurs="1" maxOccurs="1" />
<xsd:element ref="ZIP" minOccurs="1" maxOccurs="1" />
<xsd:element ref="COUNTY" minOccurs="0" maxOccurs="1" />
<xsd:element ref="PHONE_NUMBER" minOccurs="1"
maxOccurs="1" />
<xsd:element ref="CLINIC_NAME" minOccurs="0"
maxOccurs="1" />
<xsd:element ref="CLINIC_TYPE" minOccurs="0"
maxOccurs="1" />
<xsd:element ref="CLINIC_NPI" minOccurs="0"
maxOccurs="1" />
<xsd:element ref="PROVIDER_OFFICE_HOURS_TENTHS"
minOccurs="0" maxOccurs="1" />
<xsd:element ref="MAXIMUM_PATIENTS" minOccurs="0"
maxOccurs="1" />
<xsd:element ref="ACCEPT_NEW_PATIENT" minOccurs="0"
maxOccurs="1" />
<xsd:element ref="PRIMARY_CARE_INDICATOR" minOccurs="0"
maxOccurs="1" />
<xsd:element ref="FOREIGN_LANGUAGES" minOccurs="0"
maxOccurs="1" />
<xsd:element ref="SPECIALTIES" minOccurs="1"
maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="SPECIALTIES">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="CODE"
minOccurs="1">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{3}" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="FACILITIES">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" ref="FACILITY_NUM"
minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="RECORDS" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="FOREIGN_LANGUAGES">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="CODE"
minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Z]{3}" />
<xsd:pattern value="[a-z]{3}" />
<xsd:pattern value="" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="HMO_SPECIAL_SERVICES">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="CODE"
minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{2}" />
<xsd:pattern value="" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="MCO_ID_LIST">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="MCO_ID" minOccurs="1" maxOccurs="unbounded">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{1}" />
<xsd:pattern value="[0-9]{2}" />
<xsd:pattern value="[0-9]{3}" />
<xsd:pattern value="[0-9]{4}" />
<xsd:pattern value="[0-9]{5}" />
<xsd:pattern value="[0-9]{6}" />
<xsd:pattern value="[0-9]{7}" />
<xsd:pattern value="[0-9]{8}" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="HMO_WEBSITE_ADDRESS">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:maxLength value="100" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="HMO_DAILY_CONTACT_EMAIL_ADDRESS">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:maxLength value="50" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="HMO_MONTHLY_CONTACT_EMAIL_ADDRESS">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:maxLength value="50" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="NPI">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{1}" />
<xsd:pattern value="[0-9]{2}" />
<xsd:pattern value="[0-9]{3}" />
<xsd:pattern value="[0-9]{4}" />
<xsd:pattern value="[0-9]{5}" />
<xsd:pattern value="[0-9]{6}" />
<xsd:pattern value="[0-9]{7}" />
<xsd:pattern value="[0-9]{8}" />
<xsd:pattern value="[0-9]{9}" />
<xsd:pattern value="[0-9]{10}" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="FIRST_NAME">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="LAST_NAME">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MIDDLE_INITIAL">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0" />
<xsd:maxLength value="1" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="GENDER">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0" />
<xsd:maxLength value="1" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="LINE_1_ADDRESS">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="LINE_2_ADDRESS">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CITY">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="1" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="STATE">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[a-zA-Z][a-zA-Z]" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ZIP">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{5}" />
<xsd:pattern value="[0-9]{9}" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="COUNTY">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{1}" />
<xsd:pattern value="[0-9]{2}" />
<xsd:pattern value="[0-9]{3}" />
<xsd:pattern value="" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="PHONE_NUMBER">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{10}" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CLINIC_NAME">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0" />
<xsd:pattern value="" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CLINIC_TYPE">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:minLength value="0" />
<xsd:pattern value="" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="CLINIC_NPI">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{1}" />
<xsd:pattern value="[0-9]{2}" />
<xsd:pattern value="[0-9]{3}" />
<xsd:pattern value="[0-9]{4}" />
<xsd:pattern value="[0-9]{5}" />
<xsd:pattern value="[0-9]{6}" />
<xsd:pattern value="[0-9]{7}" />
<xsd:pattern value="[0-9]{8}" />
<xsd:pattern value="[0-9]{9}" />
<xsd:pattern value="[0-9]{10}" />
<xsd:pattern value="" />
<xsd:whiteSpace value="collapse"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="PROVIDER_OFFICE_HOURS_TENTHS">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{1}" />
<xsd:pattern value="[0-9]{2}" />
<xsd:pattern value="" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="MAXIMUM_PATIENTS">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{1}" />
<xsd:pattern value="[0-9]{2}" />
<xsd:pattern value="[0-9]{3}" />
<xsd:pattern value="[0-9]{4}" />
<xsd:pattern value="" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="ACCEPT_NEW_PATIENT">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Z]{1}" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="PRIMARY_CARE_INDICATOR">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Z]{1}" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="FACILITY_NUM">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:pattern value="[0-9]{1}" />
<xsd:pattern value="[0-9]{2}" />
<xsd:pattern value="[0-9]{3}" />
<xsd:pattern value="[0-9]{4}" />
<xsd:pattern value="[0-9]{5}" />
<xsd:pattern value="[0-9]{6}" />
<xsd:pattern value="[0-9]{7}" />
<xsd:pattern value="[0-9]{8}" />
<xsd:pattern value="[0-9]{9}" />
<xsd:pattern value="[0-9]{10}" />
<xsd:pattern value="" />
<xsd:whiteSpace value="collapse" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:schema>
Here's a sample of the XML (significantly shortened, and names and IDs changed to protect the innocent). BTW, the XML validates cleanly against the schema definition:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<HMO DATE="03/26/2010">
<HMO_GENERAL_INFORMATION>
<MCO_ID_LIST>
<MCO_ID>11111111</MCO_ID>
</MCO_ID_LIST>
<HMO_WEBSITE_ADDRESS>HTTP://WWW.SOMEHMONAME.COM</HMO_WEBSITE_ADDRESS>
<HMO_SPECIAL_SERVICES>
<CODE>00</CODE>
</HMO_SPECIAL_SERVICES>
<HMO_DAILY_CONTACT_EMAIL_ADDRESS>somename@someurl</HMO_DAILY_CONTACT_EMAIL_ADDRESS>
<HMO_MONTHLY_CONTACT_EMAIL_ADDRESS>somename@someurl</HMO_MONTHLY_CONTACT_EMAIL_ADDRESS>
</HMO_GENERAL_INFORMATION>
<PROVIDERS RECORDS="1011">
<PROVIDER>
<NPI>1111111111</NPI>
<FIRST_NAME>JOHN</FIRST_NAME>
<LAST_NAME>DOE</LAST_NAME>
<MIDDLE_INITIAL>A</MIDDLE_INITIAL>
<GENDER>M</GENDER>
<LINE_1_ADDRESS>1111 Some Rd</LINE_1_ADDRESS>
<LINE_2_ADDRESS> </LINE_2_ADDRESS>
<CITY>NOWHERE</CITY>
<STATE>YN</STATE>
<ZIP>12345</ZIP>
<COUNTY>13</COUNTY>
<PHONE_NUMBER>1111111111</PHONE_NUMBER>
<CLINIC_NAME>SOME CLINIC - CORPORATE OFFICE</CLINIC_NAME>
<CLINIC_NPI/>
<ACCEPT_NEW_PATIENT>Y</ACCEPT_NEW_PATIENT>
<PRIMARY_CARE_INDICATOR>N</PRIMARY_CARE_INDICATOR>
<FOREIGN_LANGUAGES>
<CODE> </CODE>
</FOREIGN_LANGUAGES>
<SPECIALTIES>
<CODE>170</CODE>
</SPECIALTIES>
</PROVIDER>
<PROVIDER>
<NPI>2222222222</NPI>
<FIRST_NAME>JANE</FIRST_NAME>
<LAST_NAME>DOE</LAST_NAME>
<MIDDLE_INITIAL>J</MIDDLE_INITIAL>
<GENDER>F</GENDER>
<LINE_1_ADDRESS>2222 SOMEOTHER ST</LINE_1_ADDRESS>
<LINE_2_ADDRESS> </LINE_2_ADDRESS>
<CITY>MYTOWN</CITY>
<STATE>YN</STATE>
<ZIP>12345</ZIP>
<COUNTY>13</COUNTY>
<PHONE_NUMBER>2222222222</PHONE_NUMBER>
<CLINIC_NAME>SOME CLINIC - MYTOWN</CLINIC_NAME>
<CLINIC_NPI/>
<ACCEPT_NEW_PATIENT>Y</ACCEPT_NEW_PATIENT>
<PRIMARY_CARE_INDICATOR>N</PRIMARY_CARE_INDICATOR>
<FOREIGN_LANGUAGES>
<CODE> </CODE>
</FOREIGN_LANGUAGES>
<SPECIALTIES>
<CODE>322</CODE>
<CODE>329</CODE>
</SPECIALTIES>
</PROVIDER>
</PROVIDERS>
<FACILITIES RECORDS="2">
<FACILITY_NUM>1000000001</FACILITY_NUM>
<FACILITY_NUM>2000000002</FACILITY_NUM>
</FACILITIES>
</HMO>
As you can see, the SPECIALTIES node can contain more than one CODE value, si I can't use extractValue to retrieve them. Again, I need to extract the NPI value from the PROVIIDER node, and associate it with each of the CODE values from the SPECIALTIES node. So, what I would need to extract from this sample XML would be:
NPI CODE
1111111111 170
2222222222 322
2222222222 329
This seems like it should be a pretty routine requirement, but I've tried everything I can think of (that is, everything I've learned to this point), and have not yet found a way............
Ideally, the solution to extracting this data would utilize SQL (not PL/SQL, or Java, or XSL, etc) with XML extraction functions (e.g. extract, extractValue, XMLSequence, XMLTable, etc).
Can anyone provide me with an example of how that iterative specialy code data could be extracted? Do I need to modify the .xsd to facilitate this extraction (so that registration of the schema results in other objects in the database)?
Any suggestions or examples would be greatly appreciated.
Thanks in advance, Dan
P.S. - I hope the XML displays OK when I post this question!
Hi,
Thanks for your detailed sample, it's very helpful.
This seems like it should be a pretty routine requirementIndeed, that's a classic (once you've got the method).
So, here's how you can do it :
SELECT x1.npi, x2.code
FROM t,
XMLTable(
'/HMO/PROVIDERS/PROVIDER'
passing t.doc
columns
npi number path 'NPI',
specialties xmltype path 'SPECIALTIES'
) x1,
XMLTable(
'SPECIALTIES/CODE'
passing x1.specialties
columns
code number path '.'
) x2
;Assuming the XML is stored in column T.DOC.
As you see, for each NPI, the trick is to pass the entire SPECIALTIES node (kind of a join) to another nested XMLTable so that each CODE could be extracted as well.
There's another method using only one XMLTable and a little more complex XQuery. I'll try to post it soon.
HTH.
Edit : 2nd method
SELECT x.*
FROM t,
XMLTable(
'for $i in /HMO/PROVIDERS/PROVIDER/SPECIALTIES/CODE
return element e
attribute npi { $i/../../NPI },
$i/text()
passing t.doc
columns
npi number path '@npi',
code number path '.'
) x
;Edited by: odie_63 on 27 mai 2010 18:43
Similar Messages
-
How to store ,retreive and edit data from an xml file
I am new to XML. I am creating a phone book in JSP with backend as an XML file.How can I store retrieve and edit datas from a jsp file.
Please provide me with examples.I dont want to use bean.
Please provide examplesYou will have to do some leg-work yourself. You will probably want to use DOM to parse and manipulate your XML data. Xerces (xml.apache.org) is a good open source parser. There are extensive examples on their site.
- Saish -
How to list selected parent and child rows with values from ADF TreeTable
I created one tree table having three levels using DepartmentsVO, EmployeesVO and
JobHistoryVO where these tables contains parent and child relationship on database.
Then i added one more column to the tree table which displays selectBooleanCheckBox. This
check box is available for parent and child rows in that column.
My first concern is i
want to list out all the parentids and its child ids from three levels where the check
box is selected.
second concern is
if i select the check box for a parent row, then the remaining check boxes for child rows also select automatically which are comes under the parent row.
Thanks in advance.
jkhi Frank,
Thanks for the quick reply...
As I mentioned before I am able to get the children using JUCtrlHierNodeBinding. but wanted to change the value of child row which have specific data.
Is it possible through JUCtrlHierNodeBinding to update data of child and parent?? If so then can you please post the code snippet for the same???
Viral -
Insert data Flatfile table to Parent and child tables
Hi All,
I have Flatfile table which is we getting from daily txt files and i want to populate flatfile data to parent as well as child tables. parent table has primary key as ID. This ID is foreign key of child tables.
Here i have mentioned our process.
1. Flatfile duplicates has to remove with condition of daily date.
2. Before Insert parent table have to check duplicate(we have Unique key of 4 columns in parent) if duplicate is there we have to delete duplicate then Insert into parent table unique records(Primary key is ID).(here why we are delete duplicate record meaning
we getting daily files so if any records updated in future that record should be insert to parent and child table so only we delete old records and insert new records).
3.After insert parent we have to populate child tables from Flatfile table as well as we have to insert parent table primary key as foreign key of child tables.
4. if any truncation error occurs that errors should go to error log table.
Right now we are using cursor for this concept and cursor has performance issue. so we are trying to optimize other way to populate parent and child table to increase performance to populate.
Please help us to which way to do this process increase of performance .
Please can any one reply.Hi RajVasu,
Since this issue is related to Transact-SQL, I will move this thread to Transact-SQL forum. Sometime delay might be expected from the job transferring. Your patience is greatly appreciated.
Thank you for your understanding and support.
Regards,
Katherine Xiong
Katherine Xiong
TechNet Community Support -
Application to Read and Write the Configuration Data from a xml file
Hi,
I have to develop a Webdynpro application that will do the following:
Read the Configuration data from an xml file
If stored in a file , and the file is not found, prompt the user to provide the file location.
Pre-Populate the screen(table) with the configuration data
Allow the user to edit the data
Store the configuration data when the user hits the Save button
The config xml file details are as follows:
Regardless of the location of the configuration data, the following fields will be stored
Application (string) will always contain u201CSFA_EDOCSu201D
Key (string) eg LDAP_USER, DB_PREFIX, etc.
Type (character) u201CPu201D = Plain Text, u201CEu201D = Encrypted
Value (string)
Since I am new to WD, I would require help on this.
Please help.Its Urgent.
Regards,
Vaishali.
Edited by: vaishali dhayalan on Sep 19, 2008 8:29 AMHi,
I have to develop a Webdynpro application that will do the following:
Read the Configuration data from an xml file
If stored in a file , and the file is not found, prompt the user to provide the file location.
Pre-Populate the screen(table) with the configuration data
Allow the user to edit the data
Store the configuration data when the user hits the Save button
The config xml file details are as follows:
Regardless of the location of the configuration data, the following fields will be stored
Application (string) will always contain u201CSFA_EDOCSu201D
Key (string) eg LDAP_USER, DB_PREFIX, etc.
Type (character) u201CPu201D = Plain Text, u201CEu201D = Encrypted
Value (string)
Since I am new to WD, I would require help on this.
Please help.Its Urgent.
Regards,
Vaishali.
Edited by: vaishali dhayalan on Sep 19, 2008 8:29 AM -
Session expiration issue with parent and child window
Hi,
We have two applications (App1 - Implemented using JSF, Spring and Hibernate and App2 -Implemented using Spring MVC, Spring JDBC).
I have implemented 'Test Access Content' functionality in App1.
First admin user (Role- Manager) needs to login to App1
As part of 'Test Access Content' functionality, he enters URL with encrypted key and click 'Test Access' button.
It opens new window (implemented using java script - window.open) and hits spring controller of App2.
In spring controller of App2, I am decrypting the key to get user details. After that i am setting user details in session, constructing final URL to display actual content.
Problem is parent window maintains session till child window renders response. Once child window renders response, parent window loosing session.
So, if i click any button in parent window after child window renders response, it displays login page as there is no session for parent window.
Please note that App1 and App2 are sharing same domain. only context paths are different for both apps (app1 and app2).
Any suggestions on this issue are much appreciated. Please let us know if you have any questions.Hi,
When you open a child window from parent window then you can access child data in the parent window through javascript.
We have a main web page. There are quite many links on it from which >user can open new web pages but the data is saved when the submit >button on the main page is clicked. Also data that user entered on the >other sub pages is not displayed in the main window.
1 is this a case of parent and child window.case 1 When you are submitting the main page you need to run javascript function and get data from child windows and save that to database or session. next time when you are displaying the main window you need to query session or database to display the child window data in the main window.
Case 2> closing child window and you need data in the parent. This can be done in two ways.
1> When you are closing the child window populate some variables of the main window using javasript.
2> Save the values in the database or session and refresh the main window and extract data from database or session
Where should the data be saved that user enetered on the sub pages as the data is not shown in the main page - should it be stored in the session?It is design decision. You can store data in either session or database when you are closing the child window. But ifyou are saving the data on the main page then you can populate main page with child windows data using javascript. Save the data t database when main window data is saved. Depends on business requirements.
In short if you are saving child windows data in session or database then you need to refresh main screen to pull that data otherwise populate main screen using javascript.
I hope i answered your questions :) best of luck -
Parenting and child control with AS3
Hi,
I'm new to AS3 and although I can see some good practice and functionality I'm constantly getting stucked and can't yet make things that I would do so easily with AS2 - I almost need to relearn it from scratch!. Still I would appreciate some help and guidance on this...
I made a class that creates a "kind" of menu with data from a XML file and basically what it does when it is called is create a emptyMC (a container), add a childMC (a square) and add another child (a text label). When I create the container I'm trying to add a MouseEvent that can act on each the container instances but all I can get is a MouseEvent on object containing all the added MCs. The code follows.
Can anyone enlight me with this issue or explain what am I doing wrong.
I can't understand well the dynamic parenting with AS3 and the lack of using instance names and dot parenting doesn't help.
Thanks in advance.
Note to Adobe: Previous versions of Flash Help Files and AS reference were by far more helpful than in CS4!
In the timeline:
import assets.myDynMenu;
var theMenu:myDynMenu = new myDynMenu("menu.xml");
stage.addChild(theMenu)
stop();
In the class:
package assets
import flash.display.*;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.net.*;
public class myDynMenu extends Sprite {
// INIT EXTERNAL DATA LOAD
public function myDynMenu(theData) {
// LOADS THE MENU DATA FROM PREFORMATTED XML
var loader:URLLoader = new URLLoader();
var url:URLRequest = new URLRequest(theData);
loader.addEventListener(Event.COMPLETE, buildTheMenu);
loader.load(url);
// XML MENU DATA LOAD CHECK - ON COMPLETE BUILD OBJECT AND CHILDREN
public function buildTheMenu(event:Event):void {
var xml:XML = new XML(event.target.data);
for (var i=0; i<xml.menuData.menuItem.length(); i++) {
// ADDS A CONTAINER
var itemContainer:MovieClip = new MovieClip();
itemContainer.name = "menu" + i;
// THE NEXT LINE DOESN'T ACT AS I WISHED?!
// IN THE FUNCTION CALLED I NEED TO CONTROL THIS ITEM AND ITS CHILDREN
itemContainer.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
itemContainer.x = 100 * i;
itemContainer.y = 0;
itemContainer.mouseEnabled = true;
itemContainer.mouseChildren = false;
addChild(itemContainer);
// ADDS A CHILD TO CONTAINER (a square)
var itemBase:MovieClip = new MovieClip();
itemBase.graphics.beginFill(xml.menuData.mConfig.mainItemColor);
itemBase.graphics.drawRect(0,0,xml.menuData.mConfig.mainItemW,xml.menuData.mConfig.mainIt emH);
itemBase.graphics.endFill();
itemBase.name = "base" + i;
itemBase.mouseEnabled = false;
itemBase.mouseChildren = false;
itemContainer.addChild(itemBase);
// ADDS ANOTHER CHILD TO CONTAINER (a text label)
var theLabel:TextField = new TextField();
theLabel.x = 5;
theLabel.y = 5;
theLabel.selectable = false;
theLabel.mouseEnabled = false;
theLabel.border = true;
theLabel.text = xml.menuData.menuItem[i].mName;
itemContainer.addChild(theLabel);
// THIS IS THE MOUSE OVER THAT I NEED TO ACT ON EACH itemContainer (AND CHILDREN)
private function onMouseOver(event:MouseEvent):void {
event.stopPropagation();
trace("You are over " + this.name );use:
package assets
import flash.display.*;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.net.*;
public class myDynMenu extends Sprite {
// INIT EXTERNAL DATA LOAD
public function myDynMenu(theData) {
// LOADS THE MENU DATA FROM PREFORMATTED XML
var loader:URLLoader = new URLLoader();
var url:URLRequest = new URLRequest(theData);
loader.addEventListener(Event.COMPLETE, buildTheMenu);
loader.load(url);
// XML MENU DATA LOAD CHECK - ON COMPLETE BUILD OBJECT AND CHILDREN
public function buildTheMenu(event:Event):void {
var xml:XML = new XML(event.target.data);
for (var i=0; i<xml.menuData.menuItem.length(); i++) {
// ADDS A CONTAINER
var itemContainer:MovieClip = new MovieClip();
itemContainer.name = "menu" + i;
// THE NEXT LINE DOESN'T ACT AS I WISHED?!
// IN THE FUNCTION CALLED I NEED TO CONTROL THIS ITEM AND ITS CHILDREN
itemContainer.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver);
itemContainer.x = 100 * i;
itemContainer.y = 0;
itemContainer.mouseEnabled = true;
itemContainer.mouseChildren = false;
addChild(itemContainer);
// ADDS A CHILD TO CONTAINER (a square)
var itemBase:MovieClip = new MovieClip();
itemBase.graphics.beginFill(xml.menuData.mConfig.mainItemColor);
itemBase.graphics.drawRect(0,0,xml.menuData.mConfig.mainItemW,xml.menuData.mCon fig.mainItemH);
itemBase.graphics.endFill();
itemBase.name = "base" + i;
itemBase.mouseEnabled = false;
itemBase.mouseChildren = false;
itemContainer.addChild(itemBase);
// ADDS ANOTHER CHILD TO CONTAINER (a text label)
var theLabel:TextField = new TextField();
theLabel.x = 5;
theLabel.y = 5;
theLabel.selectable = false;
theLabel.mouseEnabled = false;
theLabel.border = true;
theLabel.text = xml.menuData.menuItem[i].mName;
itemContainer.addChild(theLabel);
// THIS IS THE MOUSE OVER THAT I NEED TO ACT ON EACH itemContainer (AND CHILDREN)
private function onMouseOver(event:MouseEvent):void {
event.stopPropagation();
trace("You are over " + event.currentTarget.name ); -
Create Individual Idocs Based on Parent and Child Segment type
Hi Experts,
I have a scenario IDOC to FILE , Split Single IDOC into Multiple IDOC's based on parent and child Segment Type
For example If 3 child segments are same and 1 segment is different under parent segment then 3 same child segments are clubbed and create single idoc under parent segments and 1 different child should create in individual idoc under parent segment.
Note : Same logic should work for N number of Parent Segments and Child Segments.
Outbound:
ZIdocName
Control Record
Data Record
Parent Segment A
Child Segment 1
Child Segment 1
Child Segment 1
Child Segment 2
Parent segment B
Child Segment 3
Status Record
I should get output like below
Inbound:
ZIdocName
Control Record
Data Record
Parent segment A
Child Segment 1
Child Segment 1
Child Segment 1
Status Record
ZIdocName
Control Record
Data Record
Parent segment A
Child Segment 2
Status Record
ZIdocName
Control Record
Data Record
Parent Segment B
Child Segment 3
Status Record
Please suggest me step by step process to achieve this task.
Thanks.
RamHello,
Segment won't hold any value, so filter criteria should be there on some field wich exist in Parent node and chile node?
Paste ur XML?
Try this(Assuming u have some fields in parent/child segment on which u want to define filter criteria):
Parent Field--UseOneAsMany----RC----
------------------Concat ----splitbyvalue(value change)--collapse context --- ZIdoc
Child field-- RC----------
Child field--RC--splitbyvalue(valuechange)--CC -Splitbyvalue(each value) -- ParentSegment
Child field--RC--splitbyvalue(valuechange)--- ChildSegment
RC -> Remove Context
CC - Collapse Context
Note - i haven't tested ur mapping, so make sure to adjust context in mapping
Thanks
Amit Srivastava
Message was edited by: Amit Srivastava -
Need query linking parent and child discrete jobs created through ascp planning
Could you help me create a query that will show both the parent and child discrete jobs created through ascp run? I do not need entire query. I need to know the names of tables and understand the links or joins between tables. Then, I shall be able to write the sql on my own.
ThanksJust use a format like this:
http://<Server Name>:<port Number>/OpenDocument/opendoc/openDocument.jsp?sDocName=reportB&sType=wid&sRefresh=Y
&lsMObjectName=[test1],[test2]
Here in lsM[ObjectName] parameter [ObjectName] = the object name which you want to send data to ReportB
I can give you a idea of creating hyperlink for jumping another report (Here ReportB)
Just use a formula like that in any cell:
="<a href=http://<Server Name>:<port Number>/OpenDocument/opendoc/openDocument.jsp?sDocName=reportB&sType=wid&sRefresh=Y&lsMObjectName=[test1],[test2]&sWIndow=New> Click here to view </a>
Now from the property select Read cell content as "Hyperlink"...
thats it......
For more information please see the
"OpenDocument" artile
Hope you can get help from this
Edited by: Arif Arifuzzaman on Aug 20, 2009 7:24 AM -
Check for same parent and child combination
hi all i am using oracle 10g. can you please help me in this issue.
how do i know if the same combination of parent and child present in the table
key value and value are the values given by user.
if the user try to create a same profile with same set of key_value and value then that should be avoided
so how to achieve that.
example profile already in the table
-- PROFILE_ID,DETAIL_ID,PARENT_DETAIL_ID,KEY_VALUE, VALUE, LAST_IND
100, 1, NULL, 1, CDE, N
100, 2, 1, 2, XXX, N
100, 3, 1, 2, YYY, N
100, 4, 1, 4, NEW, Ynew profile by user -- it should throw an error saying that same profile already present
-- PROFILE_ID,DETAIL_ID,PARENT_DETAIL_ID,KEY_VALUE,VALUE,LAST_IND
101, 5, NULL, 1, CDE, N
101, 6, 5, 2, XXX, N
101, 7, 5, 2, YYY, N
101, 8, 5, 4, NEW, YEdited by: DeepakDevarapalli on Dec 9, 2009 9:48 AM
Edited by: DeepakDevarapalli on Dec 9, 2009 9:59 AMsir i have used your logic, each query works fine and displays the correct results below are the results.
SELECT SUBSTR (t.ptxt, 2, LENGTH (ptxt)) profile_values
FROM (SELECT SYS_CONNECT_BY_PATH (rtxt, ',') AS ptxt
FROM (SELECT key_value || '/' || VALUE AS rtxt,
ROW_NUMBER () OVER (PARTITION BY profile_id ORDER BY key_value,
VALUE) AS rnum
FROM sp_profile_detail
WHERE profile_id IN (100, 101))
WHERE CONNECT_BY_ISLEAF = 1
START WITH rnum = 1
CONNECT BY rnum = PRIOR rnum + 1) t
GROUP BY ptxtresults from query 1
profile_values
1/CDE,2/XXX,2/YYY,4/111
1/CDE,2/XXX,2/YYY,4/222
SELECT SUBSTR (s.ptxt, 2, LENGTH (ptxt)) profile_values
FROM (SELECT SYS_CONNECT_BY_PATH (rtxt, ',') AS ptxt
FROM (SELECT key_value || '/' || VALUE AS rtxt,
ROW_NUMBER () OVER (ORDER BY key_value,
VALUE) AS rnum
FROM sp_profile_detail1)
WHERE CONNECT_BY_ISLEAF = 1
START WITH rnum = 1
CONNECT BY rnum = PRIOR rnum + 1) s
GROUP BY ptxtresults from query 2
profile_values
1/CDE,2/XXX,2/YYY,4/111
but when i tried to combine both and do a minus it throws me an error .
ORA-00600: internal error code, arguments: [expcmo_strdef1], [27], [27], [], [], [], [], []
-- target
SELECT SUBSTR (t.ptxt, 2, LENGTH (ptxt)) profile_values
FROM (SELECT SYS_CONNECT_BY_PATH (rtxt, ',') AS ptxt
FROM (SELECT key_value || '/' || VALUE AS rtxt,
ROW_NUMBER () OVER (PARTITION BY profile_id ORDER BY key_value,
VALUE) AS rnum
FROM sp_profile_detail
WHERE profile_id IN (100, 101))
WHERE CONNECT_BY_ISLEAF = 1
START WITH rnum = 1
CONNECT BY rnum = PRIOR rnum + 1) t
GROUP BY ptxt
MINUS
-- staging
SELECT SUBSTR (s.ptxt, 2, LENGTH (ptxt)) profile_values
FROM (SELECT SYS_CONNECT_BY_PATH (rtxt, ',') AS ptxt
FROM (SELECT key_value || '/' || VALUE AS rtxt,
ROW_NUMBER () OVER (ORDER BY key_value,
VALUE) AS rnum
FROM sp_profile_detail1)
WHERE CONNECT_BY_ISLEAF = 1
START WITH rnum = 1
CONNECT BY rnum = PRIOR rnum + 1) s
GROUP BY ptxt -
Error in Reading data from a xml file in ESB
Hi,
i created a inbound file adapter service which reads data from a xml file and passes it to the routing service and from there updates to the database.....
(everything created in jdeveloper)
But i am getting error....it is not getting updated to the database...when i check the database(select * from table) its showing one row selected but i couldnt find the data....
Transformation mapping also i did...
i think may be some error in reading the data from the xml file but not so sure.....
please reply to this mail as soon as possible its very urgentMichael R wrote:
The target table will be created when you execute the interface, if you set the option on the flow tab as instructed in step #6 of the "Setting up ODI Constraint on CLIENT Datastore" Section.
Option Value
CREATE_TARG_TABLE trueHi Michel,
This was not my required answer.I am sorry that I was unable to clarify my question.Actually
+This project executed successfully with some warning.Target Table is automatically created in database and also populated with data.But when I right-click Target Datastore(in >Mapping Tab of the Interface), and then select Data to View Data that needs to be inserted in the target table.I get some error like this:-...+This above line is the result of my project my problem is
when I right-click Target Datastore(in Mapping Tab of the Interface), and then select Data to View Data that already inserted in the target table.Is not shown by the view data operation.
I meant to say I am facing this error
At the10(1010 written) step of
Creating a New ODI Interface to Perform XML File to RDBMS Table Transformation
wehre it says
Open the Interface tab. Select Mapping tab, right-click Target Datastore - CLIENT, and then select Data. View Data inserted in the target table. Close Data Editor. Close the tabs...
In my case when I use my sqldeveloper I can see data successfully inserted in my target table and also in error table (data that can't satisfy the constraint) .But I was unable to check this by following the above mentioned 10 th step and got this error.
Thanks -
Pooling data from an XML file to another XML file using File Adapter
Hi,
I am trying to Pool data from an XML file to another XML file using File Adapter. I have added "Target Namespace" in both the XML and XSD.The problem is "At the destination given in the FileAdapter" only a blank XML file is created and it doesnot have any data.
Kindly suggest me some methods
Thanks in Advance.Ok here is a solution with external tables.
SQL> CREATE DIRECTORY my_xml_dir AS 'E:\oracle\Log_files\UTL_AKIVATST'
2 /
Directory created.
SQL> DROP TABLE my_xml_et
2 /
Table dropped.
SQL> CREATE TABLE my_xml_et
2 ( EMPNO NUMBER,
3 EMPNAME VARCHAR2(10),
4 JOB VARCHAR2(10),
5 HIREDATE DATE,
6 SAL NUMBER
7 )
8 ORGANIZATION EXTERNAL
9 (
10 TYPE ORACLE_LOADER
11 DEFAULT DIRECTORY my_xml_dir
12 ACCESS PARAMETERS
13 (
14 records delimited by "</EMP>"
15 badfile my_xml_dir:'empxt%a_%p.bad'
16 logfile my_xml_dir:'empxt%a_%p.log'
17 FIELDS
18 (
19 filler char(2000) terminated by "<EMP>",
20 EMPNO char(2000) enclosed by "<EMPNO>" and "</EMPNO>",
21 EMPNAME char(2000) enclosed by "<ENAME>" and "</ENAME>",
22 JOB char(2000) enclosed by "<JOB>" and "</JOB>",
23 HIREDATE char(2000) enclosed by "<HIREDATE>" and "</HIREDATE>",
24 SAL char(2000) enclosed by "<SAL>" and "</SAL>"
25 )
26 )
27 LOCATION ('emp.xml')
28 )
29 PARALLEL
30 REJECT LIMIT UNLIMITED
31 /
Table created.
SQL> SELECT * FROM my_xml_et
2 /
EMPNO EMPNAME JOB HIREDATE SAL
7369 SMITH CLERK 17-DEC-80 800
7499 ALLEN SALESMAN 20-FEB-81 1600
This is the XML file i used emp.xml
<EMPLOYEES>
<EMP>
<EMPNO>7369</EMPNO>
<ENAME>SMITH</ENAME>
<JOB>CLERK</JOB>
<HIREDATE>17-DEC-80</HIREDATE>
<SAL>800</SAL>
</EMP>
<EMP>
<EMPNO>7499</EMPNO>
<ENAME>ALLEN</ENAME>
<JOB>SALESMAN</JOB>
<HIREDATE>20-FEB-81</HIREDATE>
<SAL>1600</SAL>
<COMM>300</COMM>
</EMP>
</EMPLOYEES>
Use this external table to insert into your table.
Thanks,
Karthick. -
OIM API - How to get the values in the process form (both parent and child)
Hi,
I created an RO with a Process form (both Parent and Child).I created a unconditional process task which takes in the processinstance key and tried to retrieve the process form datas.When i tried to provison the resource,the process task is getting triggered and I could able to get the parent form data but not the child form data.
Any idea why is this happening?.Is it mandatory to have the "Triggers" ON to get the Child Form data.?
Thanks,try this
tcResultSet childResults = formOper.getChildFormDefinition(
formOper.getProcessFormDefinitionKey(procInstanceKey),
formOper.getProcessFormVersion(procInstanceKey));
This should work,
Regards,
Raghav -
Parent and Child Both Variant in Subcontracting.
Dear MM Experts.
I have a scenario in subcontracting where both the material Parent and Child are having variant class.
At the time of PO creation I am able to configure the Parent Item from the characteristics but the child item is not showing me the parameters of Child when we explode the components.
Can anyone help me resolving the issues.
Yogesh Waldeyes you can
<mx:TitleWindow>
<mx:Script>
<![CDATA[
import mx.core.Application;
]]>
</mx:Script>
</mx:TitleWindow> -
Merge of parent and child content of a heirarchy
Can anyone say the procedure to of merging the parent and child link of heirarchy into one string and been displayed in a seperate feild
Lakshmi Kanth,
I am <b>assuming</b> that you are refering to "Merge Records" option in MDM Data Manager. If this is the scenario that you are looking for then here are the details:
When it comes to Hierarchy tables, merging records is different than Merging Main table records. This option in Hierarchy tables also has lot of constraints - One of them is "Destination and source node cannot have children". Because of this, currently it is not possible to merge Parent- child records. However, for more information, please refer to this <a href="http://help.sap.com/saphelp_mdmgds55/helpdata/EN/43/9967ab46ec60b7e10000000a11466f/content.htm">link</a> for more information on Merging in Hierarchy tables.
If "Merge Records" in Data Manager is not the option that you are looking for, let us know more details.
Regards,
Rajani Kumar
Maybe you are looking for
-
How to set the value of something in a component from the main application?
Hi, Maybe I've been working on this too long, but I can't figure out how to set the value of the text property of a text input field in a component from my main application in an mx:Script block. I have a component called Login in the components fold
-
I have a veeerrrrrryyyy rough design going so please bear with that... (i know it needs lots of graphic tweaking) I am trying to put a thin dotted border #6600FF around the container div and can't seem to make it work. Any ideas? (DW8) http://www.nsb
-
my bb curve 3g wont let me set up email. when i click on it in set up, nothing happens. ive tried wiping my phone then restoring it but that wont help. what shall i do? Solved! Go to Solution.
-
Incoming email which is in a thread goes into sent folder
Why does incoming email which is in a thread goes into my sent folder on my mac book pro?
-
Having trouble with Touch Up Text Tool - Please help!
I am trying to edit inside the PDF document and have done so i n the past with other projects. I keep getting this error message pop up when I try and typ e. http://i42.photobucket.com/albums/e333/Smurf209/AdobeErro.jpg What can I do that would allow