Automated XML - Placeholder Structure Question
I'm testing XML import for a series of publications that need use automated layouts...having never attemped this. But I am confounded regarding the placeholder structure and how it should mirror the XML structure and am banging my head against a wall.
The basics of my pub are: I have profiles for every school in a district. Profiles are grouped by type of school (elem, middle, high). So my test XML example is structured like this:
<elementarySchools>
<schoolData>
<name>
<address>
<city>
<state>
etcetera...the rest of the profile is demographics, testing scores and other stuff.
</schoolData>
</elementarySchools>
Each school has about 43 fields.
I setup a document (not a tempate) with the 43 frames and taggge them to correspond to those in the XML
Each time I attempt the import to auto-populate, the XML comes in but no data displays in the frames.
QUESTION 1: Do the 43 frames need to be within a parent frame tagged as schoolData? If I drag a "schoolData" node in, it contains all of the proper data. But the objective is to auto-populate frames so they can be moved and styled as needed.
QUESTION: 2: If I ultimately need data to be displayed in a table-like layout, should I be trying to build tagge table layout?
I've read some tutorials on Adobe and I've watched a couple of Lynda vids, but I seems to be missing something important here. Any pointing in the right direction is appreciated.
Circling back on this in hopes someone can help get my ship pointed in a decent direction.
Reading up on tables via XML, as Mike mentioned, not the the greatest method and required building every table in the XML file. That's not really any more efficient for me.
However, since my "table" layout isn't that complex, I could create it using text frames that look like tables when styled correctly. This bring me back to my original issue: How do I get the XML to auto-populate tagged data frames and clone?
As sample layout would be something like this per page. Each "data" element would be a tagged frame, as well as School Name/address/phone/type:
--------------------beginning of school profile <schoolData> xml tag-----------------------
School name
school address • phone • type
Heading Heading Heading
title | data data data
title | data
title | data
title | data
Heading Heading
title | data title | data
title | data title | data
title | data title | data
title | data title | data
------------------ end of school profile </schoolData> xml tag--------------------------------
--------------------beginning of school profile <schoolData> xml tag-----------------------
School name
school address • phone • type
Heading Heading Heading
title | data data data
title | data
title | data
title | data
Heading Heading
title | data title | data
title | data title | data
title | data title | data
title | data title | data
------------------ end of school profile </schoolData> xml tag--------------------------------
>> Repeat through all profiles
I can create my layout using frames. All headings and titles can be built into a master page or template. I could set up individual frames for each data point. But I cannot for the life of me get the XML data to auto populate those tagged frames. It still seems to have something to do with the container nodes...that more than one text frame can be nested in another or tables have to be created in the XML...both of which kill the efficiency of using XML.
Similar Messages
-
Create a new line in the xml-header structure.
Hi,
Can any one tell me how to create a new line in the xml-header structure.
I am doing a IDOC-XI-HTTP scenario.
Actually my mapping create this file:
<b><?xml version="1.0" encoding="utf-8"?>
<ORDERS05>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1"> </b>
The result must look like this.
<b><?xml version="1.0" encoding="utf-8"?>
<ORDERS05>
<IDOC BEGIN="1">
<EDI_DC40 SEGMENT="1"> </b>
Thanks and Regards,
ErenHi,
thanks for you quick answer.
I found a xsl script.
It works fine.
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="*">
<xsl:param name="depth">0</xsl:param>
<!-- New line with indenting. -->
<xsl:if test="$depth > 0">
<xsl:text> </xsl:text>
</xsl:if>
<xsl:text>
</xsl:text>
<xsl:element name="{name(.)}">
<xsl:for-each select="@*">
<xsl:attribute name="{name(.)}"><xsl:value-of select="."/></xsl:attribute>
</xsl:for-each>
<xsl:apply-templates>
<xsl:with-param name="depth" select="$depth + 1"/>
</xsl:apply-templates>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Best regards
Eren -
XML document structures must start and end within the same entity
Hi there,
I'm working with a client/server application and using SaxParser for reading in xml. I get the SaxParserException: XML document structures must start and end within the same entity. I understand what that means, but it isn't applicable! The xml data being used is well-formed. I checked the well-formedness with Stylus Studio to make sure. Here's the data:
<?xml version='1.0' encoding='UTF-8'?>
<vcmessage>
<vcsource>3</vcsource>
<processevent>16</processevent>
<shape>
<llindex>0</llindex>
<shapetype>9</shapetype>
<shapeproperties>
<shapelocation>
<xcoord>54</xcoord>
<ycoord>184</ycoord>
</shapelocation>
<bounds>
<width>24</width>
<height>24</height>
</bounds>
<fgcolor>
<fgred>0</fgred>
<fggreen>0</fggreen>
<fgblue>0</fgblue>
</fgcolor>
<bgcolor>
<bgred>255</bgred>
<bggreen>255</bggreen>
<bgblue>255</bgblue>
</bgcolor>
<thickness>1</thickness>
<isfilled>false</isfilled>
</shapeproperties>
</shape>
</vcmessage>The parser generally stops around the </bgcolor> tag.
I'm using Eclypse as my IDE. I'm wondering if there's something wrong with it? Or maybe there's something wrong with the class I'm using for reading in the XML? Followng is the class.
Please advise,
Alan
package vcclient;
import java.io.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
public class XMLDocumentReader extends DefaultHandler
private VCClient client = null;
private Writer out;
private String lineEnd = System.getProperty("line.separator");
private boolean haveSourceType = false;
private boolean haveUserName = false;
private boolean haveMessage = false;
private boolean haveProcessEvent = false;
private boolean haveLinkedListIndex = false;
private boolean haveOpeningShapePropertiesTag = false;
private boolean haveShapeType = false;
private boolean haveOpeningShapeLocationTag = false;
private boolean haveShapeLocation = false;
private boolean haveOpeningXCoordTag = false;
private boolean haveOpeningYCoordTag = false;
private boolean haveOpeningBoundsTag = false;
private boolean haveBoundsWidth = false;
private boolean haveBoundsHeight = false;
private boolean haveOpeningFGColorTag = false;
private boolean haveOpeningBGColorTag = false;
private boolean haveOpeningThicknessTag = false;
private boolean haveOpeningIsFilledTag = false;
private boolean haveOpeningImageDataTag = false;
private boolean haveOpeningTextDataTag = false;
private boolean haveFGRed = false;
private boolean haveFGGreen = false;
private boolean haveFGBlue = false;
private boolean haveBGRed = false;
private boolean haveBGGreen = false;
private boolean haveBGBlue = false;
private boolean haveThickness = false;
private boolean haveIsFilled = false;
private boolean haveImageData = false;
private boolean haveTextData = false;
private VCMessage vcmessage = null;
public XMLDocumentReader(VCClient value)
client = value;
vcmessage = new VCMessage();
public VCMessage getVCMessage()
return vcmessage;
public boolean haveSourceType()
return haveSourceType;
public boolean ParseXML(InputStream stream)
boolean success = false;
// Use the default (non-validating) parser
SAXParserFactory factory = SAXParserFactory.newInstance();
try
// Set up output stream
out = new OutputStreamWriter(System.out, "UTF-8");
// Parse the input
SAXParser saxParser = factory.newSAXParser();
saxParser.parse( stream, this );
success = true;
catch (SAXParseException spe)
// Error generated by the parser
System.out.println("\n** Parsing error"
+ ", line " + spe.getLineNumber()
+ ", uri " + spe.getSystemId());
System.out.println(" " + spe.getMessage() );
// Unpack the delivered exception to get the exception it contains
Exception x = spe;
if (spe.getException() != null)
x = spe.getException();
x.printStackTrace();
return success;
catch (SAXException sxe)
// Error generated by this application
// (or a parser-initialization error)
Exception x = sxe;
if (sxe.getException() != null)
x = sxe.getException();
x.printStackTrace();
return success;
catch (ParserConfigurationException pce)
// Parser with specified options can't be built
pce.printStackTrace();
return success;
catch (Throwable t)
t.printStackTrace();
return success;
return success;
public void startDocument()throws SAXException
emit("<?xml version='1.0' encoding='UTF-8'?>");
nl();
public void endDocument()throws SAXException
try {
nl();
out.flush();
} catch (IOException e) {
throw new SAXException("I/O error", e);
public void startElement(String namespaceURI,
String lName, // local name
String qName, // qualified name
Attributes attrs)throws SAXException
String eName = lName; // element name
if (eName.equals(""))
eName = qName; // namespaceAware = false
emit("<"+eName);
if (attrs != null) {
for (int i = 0; i < attrs.getLength(); i++) {
String aName = attrs.getLocalName(i); // Attr name
if (aName.equals("")) aName = attrs.getQName(i);
emit(" ");
emit(aName + "=\"" + attrs.getValue(i) + "\"");
emit(">");
if(makeStartTag(eName).equals(Constants.OPENING_SHAPEPROPERTIES))
haveOpeningShapePropertiesTag = true;
else if(makeStartTag(eName).equals(Constants.OPENING_SHAPELOCATION))
haveOpeningShapeLocationTag = true;
else if(makeStartTag(eName).equals(Constants.OPENING_BOUNDS))
haveOpeningBoundsTag = true;
else if(makeStartTag(eName).equals(Constants.OPENING_FGCOLOR))
haveOpeningFGColorTag = true;
else if(makeStartTag(eName).equals(Constants.OPENING_BGCOLOR))
haveOpeningBGColorTag = true;
else if(makeStartTag(eName).equals(Constants.OPENING_BGGREEN))
System.out.println("See BGGreen");
else if(makeStartTag(eName).equals(Constants.OPENING_BGBLUE))
System.out.println("See BGBlue");
else if(makeStartTag(eName).equals(Constants.OPENING_THICKNESS))
haveOpeningThicknessTag = true;
else if(makeStartTag(eName).equals(Constants.OPENING_ISFILLED))
haveOpeningIsFilledTag = true;
else if(makeStartTag(eName).equals(Constants.OPENING_IMAGEDATA))
haveOpeningImageDataTag = true;
else if(makeStartTag(eName).equals(Constants.OPENING_TEXTDATA))
haveOpeningTextDataTag = true;
public void endElement(String namespaceURI,
String sName, // simple name
String qName // qualified name
)throws SAXException
if(sName.equals("") && !qName.equals(""))
sName = qName;
emit("</"+sName+">");
else
emit("</"+sName+">");
if(makeEndTag(sName).equals(Constants.CLOSING_SOURCE_TYPE))
haveSourceType = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_USER))
haveUserName = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_MESSAGE))
haveMessage = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_PROCESSEVENT))
haveProcessEvent = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_LINKEDLISTINDEX))
haveLinkedListIndex = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_SHAPETYPE))
haveShapeType = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_SHAPELOCATION))
haveOpeningShapeLocationTag = false;
else if(makeEndTag(sName).equals(Constants.CLOSING_WIDTH))
haveBoundsWidth = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_HEIGHT))
haveBoundsHeight = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_BOUNDS))
haveOpeningBoundsTag = false;
else if(makeEndTag(sName).equals(Constants.CLOSING_FGRED))
haveFGRed = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_FGGREEN))
haveFGGreen = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_FGBLUE))
haveFGBlue = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_FGCOLOR))
haveOpeningFGColorTag = false;
else if(makeEndTag(sName).equals(Constants.CLOSING_BGRED))
haveBGRed = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_BGGREEN))
haveBGGreen = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_BGBLUE))
System.out.println("See closing BGBlue");
haveBGBlue = true;
else if(makeEndTag(sName).equals(Constants.CLOSING_BGCOLOR))
haveOpeningBGColorTag = false;
else if(makeEndTag(sName).equals(Constants.CLOSING_THICKNESS))
System.out.println("XMLDocumentReader: Step2");
haveOpeningThicknessTag = false;
else if(makeEndTag(sName).equals(Constants.CLOSING_ISFILLED))
haveOpeningIsFilledTag = false;
else if(makeEndTag(sName).equals(Constants.CLOSING_IMAGEDATA))
haveOpeningImageDataTag = false;
else if(makeEndTag(sName).equals(Constants.CLOSING_TEXTDATA))
haveOpeningTextDataTag = false;
private String makeStartTag(String tag_name)
String start = "<";
String end = ">";
return start.concat(tag_name).concat(end);
private String makeEndTag(String tag_name)
String start = "</";
String end = ">";
return start.concat(tag_name).concat(end);
public void characters(char buf[], int offset, int len)throws SAXException
String s = new String(buf, offset, len);
if(haveSourceType == false)
if(vcmessage.getSourceType() == null)
try
if(s.equals(""))return;
int sourcetype = Integer.parseInt(s);
vcmessage.setSourceType(sourcetype);
catch(NumberFormatException nfe){}
else if(vcmessage.getSourceType() == SourceType.CHAT_SOURCE)
if(vcmessage.getSourceType() == SourceType.CHAT_SOURCE && haveUserName == false)
vcmessage.setUserName(s);
else if(vcmessage.getSourceType() == SourceType.CHAT_SOURCE && haveMessage == false)
//When the parser encounters interpreted characters like: & or <,
//then this method gets invoked more than once for the whole message.
//Therefore, we need to concatonate each portion of the message. The
//following method call automatically concatonates.
vcmessage.concatMessage(s);
else if(vcmessage.getSourceType() == SourceType.WHITEBOARD_SOURCE)
if(haveProcessEvent == false)
try
vcmessage.setProcessEvent(Integer.parseInt(s));
catch(NumberFormatException nfe){}
else if(haveLinkedListIndex == false)
try
vcmessage.setLinkedListIndex(Integer.parseInt(s));
catch(NumberFormatException nfe){}
else if(haveShapeType == false)
try
vcmessage.setShapeType(Integer.parseInt(s));
catch(NumberFormatException nfe){}
if(haveOpeningShapePropertiesTag)
if(haveOpeningShapeLocationTag)
if(haveOpeningXCoordTag)
try
vcmessage.setXCoordinate(Integer.parseInt(s));
catch(NumberFormatException nfe){}
else if(haveOpeningYCoordTag)
try
vcmessage.setYCoordinate(Integer.parseInt(s));
//reset all flags for ShapeLocation, X and Y coordinates
haveOpeningXCoordTag = false;
haveOpeningYCoordTag = false;
//haveOpeningShapeLocationTag = false;
catch(NumberFormatException nfe){}
else if(haveOpeningBoundsTag)
if(haveBoundsWidth == false)
try
vcmessage.setBoundsWidth(Integer.parseInt(s));
catch(NumberFormatException nfe){}
else if(haveBoundsHeight == false)
try
vcmessage.setBoundsHeight(Integer.parseInt(s));
//reset flag
//haveOpeningBoundsTag = false;
catch(NumberFormatException nfe){}
else if(haveOpeningFGColorTag)
if(haveFGRed == false)
try
vcmessage.setFGRed(Integer.parseInt(s));
catch(NumberFormatException nfe){}
else if(haveFGGreen == false)
try
vcmessage.setFGGreen(Integer.parseInt(s));
catch(NumberFormatException nfe){}
else if(haveFGBlue == false)
try
vcmessage.setFGBlue(Integer.parseInt(s));
//reset flag
//haveOpeningFGColorTag = false;
catch(NumberFormatException nfe){}
else if(haveOpeningBGColorTag)
if(haveBGRed == false)
try
vcmessage.setBGRed(Integer.parseInt(s));
catch(NumberFormatException nfe){}
else if(haveBGGreen == false)
try
vcmessage.setBGGreen(Integer.parseInt(s));
catch(NumberFormatException nfe){}
else if(haveBGBlue == false)
{ System.out.println("getting BGBlue data");
try
vcmessage.setBGBlue(Integer.parseInt(s));
//reset flag
//haveOpeningBGColorTag = false;
catch(NumberFormatException nfe){}
else if(haveOpeningThicknessTag)
try
vcmessage.setThickness(Integer.parseInt(s));
catch(NumberFormatException nfe){}
else if(haveOpeningIsFilledTag)
vcmessage.setIsFilled(s);
else if(haveOpeningImageDataTag && vcmessage.getProcessEvent() == org.jcanvas.comm.ProcessEvent.MODIFY)
vcmessage.setBase64ImageData(s);
else if(haveOpeningTextDataTag && vcmessage.getProcessEvent() == org.jcanvas.comm.ProcessEvent.MODIFY)
vcmessage.setTextData(s);
//reset
haveOpeningShapePropertiesTag = false;
emit(s);
//===========================================================
// Utility Methods ...
//===========================================================
// Wrap I/O exceptions in SAX exceptions, to
// suit handler signature requirements
private void emit(String s)throws SAXException
try {
out.write(s);
out.flush();
} catch (IOException e) {
throw new SAXException("I/O error", e);
// Start a new line
private void nl()throws SAXException
try {
out.write(lineEnd);
} catch (IOException e) {
throw new SAXException("I/O error", e);
//treat validation errors as fatal
public void error(SAXParseException e)
throws SAXParseException
throw e;
// dump warnings too
public void warning(SAXParseException err)
throws SAXParseException
System.out.println("** Warning"
+ ", line " + err.getLineNumber()
+ ", uri " + err.getSystemId());
System.out.println(" " + err.getMessage());
}Just out of curiosity what happens if you append a space to the end of the XML document?
-
Message Mapping Nested Structure to key node in JDBC XML SQL Structure
Hello everybody,
I'm facing the next problem, I have the following nested structure
<ns0:MT_Irdoc_ArchivoNested xmlns:ns0="http://ref.pemex.com/PI/FI/ArchivoIrdoc">
<Header id_consecutivo="">
<Transaction/>
<Header2/>
<Header3/>
<Header4/>
<Header5/>
<Detail>
<Transaction/>
<Detail2/>
<Detail3/>
<Detail4/>
<Detail5/>
</Detail>
</Header>
<NombreArchivo/>
</ns0:MT_Irdoc_ArchivoNested>
as you can see, Detail is a nested Node from Header Node, and Detail is with occurrence 0...unbounded, I need to generate a SELECT XML SQL Structure as follows
<StatementName>
<dbTableName action=u201DSELECTu201D>
<table>realDbTableName</table>
<access>
<col1/>
<col2/>
<col3/>
</access>
<key1>
<col4>val4</col4>
<col5>val5</col5>
<col6>val6</col6>
</key1>
</dbTableName>
</StatementName>
now my problem is that col4 and col6 are values mapped from Header fields values, and col5 mus be mapped from Detail2 field of Detail Nested Structure, and Detail is 0...unbounded so it can contain any number of values and must included in the key structure, I tried by mapping the Detail Node to the key1 node, so it will generate n numbers of key1 nodes to include in the query, and the Detail number of nodes are not constant so I can't generate key2, key3, keyn...., so what I need is to create n numbers of instances of key1 node, but the problem is that when the mapping try to generate the second instance of key1 node it gives an error in the fields that comes from Header structure, maybe I'm trying to solve my problem wrong, could anyone give some advices or direction?, thanks in advance.
Regards,
Julio CesarJulio,
After placing the below logic in the mapping editor
Details2 > SplitByValue> col5
Right click on the Details2 node and choose Context. By Default you will see Details, because Details2 is the child of Details node. I want you to choose the Parent of Details node, I believe that would be HeaderID, am I right?
If you don't want to do that then,
Details2 ---> Remove Context > SplitByvalue> col5 will do the trick!
raj. -
FCC Recordset structure question.
Hi,
I have completed the config for scenarion File>XI>IDOC(R/3)
After activating the File comm channel, the message coming out of XI (in sxmb_moni) has the following error
'Parsing an empty source. Root element expected'
I want to know:
1> Does the Recordset-structure field names (defined in .fieldNames) need to match exactly with the Data_type structure defined in IR. Currently my Data_type in IR does not have a key field, which I have introduced in the FCC keyField parameter.
2>I have generated all my ID config by importing 'Integration Scenario' from IR and this has resulted in Automatic Creation of HTTP, RFC, IDOC,XI Receiver channels. ( GeneratedReceiverChannel_HTTP, GeneratedReceiverChannel_RFC, GeneratedReceiverChannel_IDOC, GeneratedReceiverChannel_XI ). Do I require all of these to be active?
Thanks and Regards
ShirinHI
FCC Paremeters:
nameA.fieldSeparator =~
nameA.endSeparator ='nl'
nameA.fieldNames =text1,text2,text3,text4
nameA.processFieldNames fromConfiguration
nameA.lastFieldsOptional Yes
nameA.missingLastFields Add
nameA.additionalLastFields ignore
ignoreRecordsetName: true
if endSeparator = newline, then
nameA.endSeparator = 'nl'
nameA.fieldSeparator =~
nameA.fieldNames = field1,field2,field3,field4
if endSeparator = #, then
nameA.endSeparator = #
nameA.fieldSeparator =~
nameA.fieldNames = field1,field2,field3,field4
1. NameA.missingLastfields
If the inbound structure has less fields than specified in the configuration then the XML outbound structure is created as follows:
○ ignore
Outbound structure only contains the fields in the inbound structure
○ add
Outbound structure contains all fields from the configuration; the fields missing in the inbound structure are empty.
○ error
Conversion is terminated due to the incomplete inbound structure. An error message is displayed.
2. NameA.additionalLastFields
If the inbound structure has more fields than specified in the configuration then the XML outbound structure is created as follows:
○ ignore
Outbound structure only contains the fields in the inbound structure
○ error
Conversion is terminated due to the incomplete inbound structure. An error message is displayed.
The default value is ignore. If you have defined the NameA.fieldFixedLengths parameter, the default value is error.
If you have defined the NameA.fieldFixedLengths parameter and do not set either of the parameters described above, apart from the default values, the conversion routine works the same as described under Handling Structure Deviations.
Only once you set one of the two parameters will the other parameter be evaluated with its default value.
To ensure a well-defined runtime behavior for variable inbound structures, we recommend that you always set both parameters.
cheers -
[CS5.5/6] - XML / Data Merge questions & Best practice.
Fellow Countrymen (and women),
I work as a graphic designer for a large outlet chain retailer which is constantly growing our base of centers. This growth has brought a workload that used to be manageable with but two people to a never ending sprint with five. Much of what we do is print, which is not my forte, but is also generally a disorganized, ad-hoc affair into which I am wading to try to help reduce overall strain.
Upon picking up InDesign I noted the power of the simple Data Merge function and have added it to our repetoire in mass merging data sources. There are some critical failures I see in this as a tool going forward for our purposes, however:
1) Data Merge cannot handle information stored and categorized in a singular column well. As an example we have centers in many cities, and each center has its own list of specific stores. Data merge cannot handle a single column, or even multiple column list of these stores very easily and has forced us into some manual operations to concatenate the data into one cell and then, using delimiter characters, find and replace hard returns to seperate them.
2) Data Merge offers no method of alternate alignment of data, or selection by ranges. That is to say: I cannot tell Data merge to start at Cell1 in one column, and in another column select say... Cell 42 as the starting point.
3) Data merge only accepts data organized in a very specific, and generally inflexible pattern.
These are just a few limitations.
ON TO MY ACTUAL DILEMMA aka Convert to XML or not?
Recently my coworker has suggested we move toward using XML as a repository / delivery system that helps us quickly get data from our SQL database into a usable form in InDesign.
I've watched some tutorials on Lynda.com and havent yet seen a clear answer to a very simple question:
"Can XML help to 'merge' large, dynamic, data sets like a list of 200 stores per center over 40 centers based off of a single template file?"
What I've seen is that I would need to manually duplicate pages, linking the correct XML entry as I go rather than the program generating a set of merged pages like that from Data Merge with very little effort on my part. Perhaps setting up a master page would allow for easy drag and drop fields for my XML data?
I'm not an idiot, I'm simply green with this -- and it's kind of scary because I genuinely want us to proceed forward with the most flexible, reliable, trainable and sustainable solution. A tall order, I know. Correct me if I'm wrong, but XML is that beast, no?
Formatting the XML
Currently I'm afraid our XML feed for our centers isnt formatted correctly with the current format looking as such:
<BRANDS>
<BRAND>
• BrandID = xxxx
[Brand Name]
[Description]
[WebMoniker]
<CATEGORIES>
<CATEGORY>
• xmlns = URL
• WebMoniker = category_type
<STORES>
<STORE>
• StoreID = ID#
• CenterID = ID#
I dont think this is currently usable because if I wanted to create a list of stores from a particular center, that information is stored as an attribute of the <Store> tag, buried deep within the data, making it impossible to 'drag-n-drop'.
Not to mention much of the important data is held in attributes rather than text fields which are children of the tag.
Im thinking of proposing the following organizational layout:
<CENTERS>
<CENTER>
[Center_name]
[Center_location]
<CATEGORIES>
<CATEGORY>
[Category_Type]
<BRANDS>
<BRAND>
[Brand_name]
My thought is that if I have the <CENTER> tag then I can simply drag that into a frame and it will auto populate all of the brands by Category (as organized in the XML) for that center into the frame.
Why is this important?
This is used on multiple documents in different layout styles, and since our store list is ever changes as leases end or begin, over 40 centers this becomes a big hairy monster. We want this to be as automated as possible, but I'd settle for a significant amount of dragging and dropping as long as it is simple and straightforward. I have a high tollerance for druding through code and creating work arounds but my co-workers do not. This needs to be a system that is repeatable and understandable and needs to be able to function whether I'm here or not -- Mainly because I would like to step away from the responsibility of setting it up every time
I'd love to hear your raw, unadulterated thoughts on the subject of Data merge and XML usage to accomplish these sorts of tasks. What are your best practices and how would you / do you accomplish these operations?
Regards-
RobertFrom what I've gleaned through watching Lynda tutorials on the subject is that what I'm hoping to do is indeed possible.
Peter, I dont disagree with you that there is a steep learning curve for me as the instigator / designer of this method for our team, but in terms of my teammates and end-users that will be softened considerably. Even so I'm used to steep learning curves and the associated frustrations -- but I cope well with new learning and am self taught in many tools and programs.
Flow based XML structures:
It seems as though as long as the initial page is set up correctly using imported XML, individual data records that cascade in a logical fashion can be flowed automatically into new pages. Basically what you do is to create an XML based layout with the dynamic portion you wish to flow in a single frame, apply paragraph styles to the different tags appropriately and then after deleting unused records, reimport the XML with some specific boxes checked (depending on how you wish to proceed).
From there simply dragging the data root into the frame will cause overset text as it imports all the XML information into the frame. Assuming that everything is cascaded correctly using auto-flow will cause new pages to be automatically generated with the tags correctly placed in a similar fashion to datamerge -- but far more powerful and flexible.
The issue then again comes down to data organization in the XML file. In order to use this method the data must be organized in the same order in which it will be displayed. For example if I had a Lastname field, and a Firstname field in that order, I could not call the Firstname first without faulting the document using the flow method. I could, however, still drag and drop content from each tag into the frame and it would populate correctly regardless of the order of appearance in the XML.
Honestly either method would be fantastic for our current set of projects, however the flow method may be particularly useful in jobs that would require more than 40 spreads or simple layouts with huge amounts of data to be merged. -
Xml workflow/layout question - urgent
Hi,
I'm new to the XML scene and have made progress but have the following question.
I have a .xls file that I open in Oxygen (xml editor) and save out a .xml file.
I then import the .xml file into InDesign CS5.
I have tagged the text placeholders and the image placeholders with the appropriate tags (not shown in this screen grab).
I'd like to automatically flow the text data (A-E, J-O) into a text box (on the right side of image), then flow the images (E-I) into the picture boxes on the left side of the page. There is a large amount of data (InDesign pages) so it is important that I configure this so that all of the content flows automatically thoughout the InDesign file.
Do the images need to be treated as anchored objects in a text box or is it possible to flow them into picture boxes?
I can manually drag the "product_image" files to the picture boxes but I have yet to figure out how to automatically flow these images into the layout, aside from within the same text box as the rest of the text. Instead of using the anchored object approach, it seems it would be more efficient to flow into picture boxes if possible.
Also, any feedback on how to get this data to flow automically thoughout the InDesign file would be really helpful.
Thanks so much.
JoshHi,
It is possibly to flow the images into picture boxes without treating them as anchored objects.Appropriately tagging the placeholders for graphics and text and then importing the XML file would allow the data (both text and images) to flow automatically into the respective tagged frames.
Regards
-Pooja -
Hello All,
I have customized an oracle application program with xml publisher.The program prints the report in PDF format.
My questions is where this output copied in the server .I am not able to find the pdf report in $APPLCSF/out/.
Do i need to use XML bursting program to achieve this?If yes i am new to xml coding can anyone help in creating busting control file.
My object is to print the pdf report to unix server directory
THanksPl post details of OS, database and EBS versions.
>
My questions is where this output copied in the server .I am not able to find the pdf report in $APPLCSF/out/.
>
The xml and PDF output of concurrent programs should be available in $APPLCSF/$APPLOUT directory.
>
Do i need to use XML bursting program to achieve this?If yes i am new to xml coding can anyone help in creating busting control file.
>
Pl see if these links can help
http://blogs.oracle.com/xmlpublisher/2007/04/bursting_with_bip.html
http://blogs.oracle.com/xmlpublisher/2007/04/e_business_suite_bursting.html
>
My object is to print the pdf report to unix server directory
>
Pl clarify what you mean by this.
HTH
Srini -
XMLType column based on XML Schema: several questions
Hi,
I've a table on an oracle db version 10.1.0.4 where I stage the xml files containing orders created on a third party's system using BizTalk.
Although the storage I opted for is based on an XML Schema, defined by this third-party, I am facing big perfomance issues with files bigger than a few hundreds of kBs.
For instance, a 32Mb file takes more than 2 hours to be processed.
Now, after reading other threads in this forum and the documentation, my understanding of the problem is that the whole issue is with the correct indexing of the nested tables.
Here is my current XML Schema definition:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xdb="http://xmlns.oracle.com/xdb"
elementFormDefault="qualified"
attributeFormDefault="unqualified"
xdb:storeVarrayAsTable="true">
<xs:include schemaLocation="private/Types.xsd"/>
<xs:element name="PickData">
<xs:complexType xdb:maintainDOM="false">
<xs:sequence>
<xs:element name="ProdRun">
<xs:complexType xdb:maintainDOM="false">
<xs:sequence>
<xs:element name="Nr" type="xs:int"/>
<xs:element name="Date" type="string8"/>
<xs:element name="Final" type="xs:int"/>
<xs:element name="PickWave" maxOccurs="unbounded">
<xs:complexType xdb:maintainDOM="false">
<xs:sequence>
<xs:element name="Nr" type="string10"/>
<xs:element name="ProdLine" type="string2"/>
<xs:element name="TourSeq" type="xs:int"/>
<xs:element name="Tour" type="string20"/>
<xs:element name="Customer" maxOccurs="unbounded">
<xs:complexType xdb:maintainDOM="false">
<xs:sequence>
<xs:element name="Seq" type="string20"/>
<xs:element name="Cust" type="string10"/>
<xs:element name="Mod" type="string30"/>
<xs:element name="Tod" type="string30"/>
<xs:element name="InvOrder" maxOccurs="unbounded">
<xs:complexType xdb:maintainDOM="false">
<xs:sequence>
<xs:element name="Nr" type="string20"/>
<xs:element name="Item" type="string20"/>
<xs:element name="Qty" type="xs:int"/>
<xs:element name="Priority" type="xs:int"/>
<xs:element name="Reordering" type="xs:int"/>
<xs:element name="DelDate" type="string8"/>
<xs:element name="HlOrder" type="string20"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="InvOrderKey">
<xs:selector xpath="InvOrder"/>
<xs:field xpath="Nr"/>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="CustomerKey">
<xs:selector xpath="Customer"/>
<xs:field xpath="Seq"/>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="PickWaveKey">
<xs:selector xpath="PickWave"/>
<xs:field xpath="Nr"/>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:unique name="ProdRunKey">
<xs:selector xpath="ProdRun"/>
<xs:field xpath="Nr"/>
</xs:unique>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Here is the included sub-schema:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="string2">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="2"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="string5">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="5"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="string6">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="6"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="string8">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="8"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="string10">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="10"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="string15">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="15"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="string20">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="20"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="string30">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="30"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="string40">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="40"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="string50">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="50"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:simpleType name="string250">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="250"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
The statement for creating my table is
CREATE TABLE "XML_ORDERS"
("ID" NUMBER(7,0) NOT NULL ENABLE,
"XMLFILE" "SYS"."XMLTYPE" ,
"INSERTED" DATE DEFAULT sysdate,
CONSTRAINT "XML_ORDERS_PK" PRIMARY KEY ("ID") USING INDEX ENABLE
) XMLTYPE COLUMN XMLFILE STORE AS OBJECT RELATIONAL
XMLSCHEMA "private/PickData.xsd" ELEMENT "PickData"
Here is a simple instance document:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<PickData xsi:noNamespaceSchemaLocation="private/PickData.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ProdRun>
<Nr>5</Nr>
<Date>15112005</Date>
<Final>1</Final>
<PickWave>
<Nr>IPW0000017</Nr>
<ProdLine>01</ProdLine>
<TourSeq>1</TourSeq>
<Tour>00000043_078</Tour>
<Customer>
<Seq>5</Seq>
<Cust>100000006</Cust>
<Mod>FO</Mod>
<Tod>DDU</Tod>
<InvOrder>
<Nr>IIO0000457</Nr>
<Item>100000036</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000742</HlOrder>
</InvOrder>
<InvOrder>
<Nr>IIO0000459</Nr>
<Item>100000045</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000742</HlOrder>
</InvOrder>
</Customer>
<Customer>
<Seq>6</Seq>
<Cust>100000013</Cust>
<Mod>FO</Mod>
<Tod>DDU</Tod>
<InvOrder>
<Nr>IIO0000461</Nr>
<Item>100000036</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000743</HlOrder>
</InvOrder>
<InvOrder>
<Nr>IIO0000463</Nr>
<Item>100000045</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000743</HlOrder>
</InvOrder>
</Customer>
<Customer>
<Seq>2</Seq>
<Cust>100000114</Cust>
<Mod>FO</Mod>
<Tod>DDU</Tod>
<InvOrder>
<Nr>IIO0000465</Nr>
<Item>100000036</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000744</HlOrder>
</InvOrder>
<InvOrder>
<Nr>IIO0000467</Nr>
<Item>100000045</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000744</HlOrder>
</InvOrder>
</Customer>
<Customer>
<Seq>3</Seq>
<Cust>100000140</Cust>
<Mod>FO</Mod>
<Tod>DDU</Tod>
<InvOrder>
<Nr>IIO0000469</Nr>
<Item>100000036</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000745</HlOrder>
</InvOrder>
<InvOrder>
<Nr>IIO0000471</Nr>
<Item>100000045</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000745</HlOrder>
</InvOrder>
</Customer>
<Customer>
<Seq>7</Seq>
<Cust>100000143</Cust>
<Mod>FO</Mod>
<Tod>DDU</Tod>
<InvOrder>
<Nr>IIO0000473</Nr>
<Item>100000036</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000746</HlOrder>
</InvOrder>
<InvOrder>
<Nr>IIO0000475</Nr>
<Item>100000045</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000746</HlOrder>
</InvOrder>
</Customer>
<Customer>
<Seq>8</Seq>
<Cust>100000145</Cust>
<Mod>FO</Mod>
<Tod>DDU</Tod>
<InvOrder>
<Nr>IIO0000477</Nr>
<Item>100000036</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000747</HlOrder>
</InvOrder>
<InvOrder>
<Nr>IIO0000479</Nr>
<Item>100000045</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000747</HlOrder>
</InvOrder>
</Customer>
<Customer>
<Seq>9</Seq>
<Cust>100000146</Cust>
<Mod>FO</Mod>
<Tod>DDU</Tod>
<InvOrder>
<Nr>IIO0000481</Nr>
<Item>100000036</Item>
<Qty>20</Qty>
<Priority>0</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000748</HlOrder>
</InvOrder>
<InvOrder>
<Nr>IIO0000483</Nr>
<Item>100000045</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000748</HlOrder>
</InvOrder>
</Customer>
<Customer>
<Seq>4</Seq>
<Cust>100000147</Cust>
<Mod>FO</Mod>
<Tod>DDU</Tod>
<InvOrder>
<Nr>IIO0000485</Nr>
<Item>100000036</Item>
<Qty>20</Qty>
<Priority>0</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000750</HlOrder>
</InvOrder>
<InvOrder>
<Nr>IIO0000487</Nr>
<Item>100000045</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000750</HlOrder>
</InvOrder>
</Customer>
<Customer>
<Seq>10</Seq>
<Cust>100000148</Cust>
<Mod>FO</Mod>
<Tod>DDU</Tod>
<InvOrder>
<Nr>IIO0000489</Nr>
<Item>100000036</Item>
<Qty>20</Qty>
<Priority>0</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000751</HlOrder>
</InvOrder>
<InvOrder>
<Nr>IIO0000491</Nr>
<Item>100000045</Item>
<Qty>20</Qty>
<Priority>1</Priority>
<Reordering>0</Reordering>
<DelDate>15112005</DelDate>
<HlOrder>CSO000751</HlOrder>
</InvOrder>
</Customer>
</PickWave>
</ProdRun>
</PickData>
When I registered the XMLSchema, the following types and tables were automatically created and you can see the hierarchy below:
(by the way, I could not find any xdb_utilities.printNestedTables mentioned elsewhere)
XML_ORDERS
|_PickData381_T
|___ProdRun382_T
|_____PickWave388_COLL
|_______PickWave383_T
|_________Customer387_COLL
|___________Customer384_T
|_____________InvOrder386_COLL
These objects are then used in the following nested tables:
TABLE_NAME TABLE_TYPE_NAME PARENT_TABLE_NAME PARENT_TABLE_COLUMN
SYS_NTaK/5zar5S0WitSsgu6OKPQ== PickWave388_COLL PickData389_TAB "XMLDATA"."ProdRun"."PickWave"
SYS_NTf6QvwVm8SFKz+K/YYWq+WQ== Item408_COLL ProdData409_TAB "XMLDATA"."Item"
SYS_NTtu05ilrRQqmuEN4k+07VDA== Customer402_COLL OutboundParty403_TAB "XMLDATA"."Customer"
SYS_NTK6fhWq5uTJ+vKcgBpNm1Fg== InvOrder386_COLL SYS_NTIIzv7bkXQSSS43igtfi5eg== InvOrder
SYS_NTIIzv7bkXQSSS43igtfi5eg== Customer387_COLL SYS_NTaK/5zar5S0WitSsgu6OKPQ== Customer
I enabled sql tracing and I got the following TKPROF output
INSERT INTO IMP_ORDERS (PICK_INVORDERNR, PICK_ITEM, PICK_QTY, PICK_PRIORITY,
PICK_REORDERING, PICK_HLORDER, PICK_DELDATE, PICK_CUST, PICK_MOD, PICK_TOD,
PICK_SEQ, PICK_PICKWAVENR, PICK_PICKWAVEPRODLINE, PICK_PICKWAVETOUR,
PICK_PICKWAVETOURSEQ, PICK_ORDKEY, PICK_RUNKEY) SELECT INVORDERNR, ITEM,
QTY, PRIORITY, REORDERING, HLORDER, DELDATE, CUST, MOD, TOD, SEQ,
PICKWAVENR, PICKWAVEPRODLINE, PICKWAVETOUR, PICKWAVETOURSEQ, ROWNUM AS
PICK_ORDKEY, PRODRUNID FROM (SELECT /*+ cardinality(g 15)*/
EXTRACTVALUE(VALUE(G), '/InvOrder/Nr') AS INVORDERNR, EXTRACTVALUE(VALUE(G),
'/InvOrder/Item') AS ITEM, EXTRACTVALUE(VALUE(G), '/InvOrder/Qty') AS QTY,
EXTRACTVALUE(VALUE(G), '/InvOrder/Priority') AS PRIORITY,
EXTRACTVALUE(VALUE(G), '/InvOrder/Reordering') AS REORDERING,
EXTRACTVALUE(VALUE(G), '/InvOrder/HlOrder') AS HLORDER,
TO_DATE(EXTRACTVALUE(VALUE(G), '/InvOrder/DelDate'),'DDMMYYYY') AS DELDATE,
F.CUST, F.MOD, F.TOD, F.SEQ, F.PICKWAVENR, F.PICKWAVEPRODLINE,
F.PICKWAVETOUR, F.PICKWAVETOURSEQ, F.PRODRUNNR, F.PRODRUNDATE,
F.PRODRUNFINAL, F.PRODRUNID FROM (SELECT /*+ cardinality(e 60)*/VALUE(E) AS
CUSTOMERNODE, EXTRACTVALUE(VALUE(E), '/Customer/Cust') AS CUST,
EXTRACTVALUE(VALUE(E), '/Customer/Mod') AS MOD, EXTRACTVALUE(VALUE(E),
'/Customer/Tod') AS TOD, TO_NUMBER(EXTRACTVALUE(VALUE(E), '/Customer/Seq'))
AS SEQ, D.PICKWAVENR, D.PICKWAVEPRODLINE, D.PICKWAVETOUR, D.PICKWAVETOURSEQ,
D.PRODRUNNR, D.PRODRUNDATE, D.PRODRUNFINAL, D.PRODRUNID FROM (SELECT /*+
cardinality(c 100)*/VALUE(C) AS PICKWAVENODE, EXTRACTVALUE(VALUE(C),
'/PickWave/Nr') AS PICKWAVENR, TO_NUMBER(EXTRACTVALUE(VALUE(C),
'/PickWave/ProdLine')) AS PICKWAVEPRODLINE, EXTRACTVALUE(VALUE(C),
'/PickWave/Tour') AS PICKWAVETOUR, TO_NUMBER(EXTRACTVALUE(VALUE(C),
'/PickWave/TourSeq')) AS PICKWAVETOURSEQ, A.PRODRUNNR, A.PRODRUNDATE,
A.PRODRUNFINAL, A.PRODRUNID FROM (SELECT /*+ cardinality(b 1)*/VALUE(B) AS
PRODRUNNODE, EXTRACTVALUE(VALUE(B), '/ProdRun/Nr') AS PRODRUNNR,
TO_DATE(EXTRACTVALUE(VALUE(B), '/ProdRun/Date'),'DDMMYYYY') AS PRODRUNDATE,
EXTRACTVALUE(VALUE(B), '/ProdRun/Final') AS PRODRUNFINAL, X.ID PRODRUNID
FROM XML_ORDERS X, TABLE(XMLSEQUENCE(EXTRACT(X.XMLFILE,'/PickData/ProdRun'))
) B WHERE X.ID = :B1 ) A, TABLE(XMLSEQUENCE(EXTRACT(A.PRODRUNNODE,
'/ProdRun/PickWave'))) C ) D, TABLE(XMLSEQUENCE(EXTRACT(D.PICKWAVENODE,
'/PickWave/Customer'))) E ) F, TABLE(XMLSEQUENCE(EXTRACT(F.CUSTOMERNODE,
'/Customer/InvOrder'))) G ORDER BY PICKWAVEPRODLINE, PICKWAVETOURSEQ,
PICKWAVENR, SEQ )
call count cpu elapsed disk query current rows
Parse 1 0.00 0.00 0 0 0 0
Execute 1 4324.09 9994.65 0 57193 0 0
Fetch 0 0.00 0.00 0 0 0 0
total 2 4324.09 9994.65 0 57193 0 0
Misses in library cache during parse: 1
Misses in library cache during execute: 1
Optimizer mode: ALL_ROWS
Parsing user id: 68 (recursive depth: 1)
Rows Row Source Operation
0 COUNT (cr=0 pr=0 pw=0 time=180 us)
0 VIEW (cr=0 pr=0 pw=0 time=166 us)
0 SORT ORDER BY (cr=0 pr=0 pw=0 time=152 us)
40866 NESTED LOOPS (cr=54973 pr=0 pw=0 time=31065606 us)
1363 NESTED LOOPS (cr=54937 pr=0 pw=0 time=11037183 us)
1 NESTED LOOPS (cr=54889 pr=0 pw=0 time=10145883 us)
1 NESTED LOOPS (cr=54841 pr=0 pw=0 time=9799012 us)
1 TABLE ACCESS BY INDEX ROWID XML_ORDERS (cr=2 pr=0 pw=0 time=222 us)
1 INDEX UNIQUE SCAN XML_ORDERS_PK (cr=1 pr=0 pw=0 time=126 us)(object id 58551)
1 COLLECTION ITERATOR PICKLER FETCH (cr=54839 pr=0 pw=0 time=9798748 us)
1 COLLECTION ITERATOR PICKLER FETCH (cr=48 pr=0 pw=0 time=346818 us)
1363 COLLECTION ITERATOR PICKLER FETCH (cr=48 pr=0 pw=0 time=870830 us)
40866 COLLECTION ITERATOR PICKLER FETCH (cr=36 pr=0 pw=0 time=18739302 us)
Note that I cancelled this operation before it was over so I imagine that these figures refer to the statistics as of the time when the operation was interrupted.
So, here are finally my questions.
In order to create the constraints on the nested tables as shown in other threads, do I need to drop the existing xml_orders table and ancillary object types and recreate them or is there a way to add such constraints using the existing system generated object names?
Secondly, the xml_orders table may contain severale documents, not just one and his current primary key is the column ID. So, in order to uniquely identify the deepest element in the xml document, I need first to select the relevant document by means of the id column.
Would it be better to create the indexes containing this id column together with the nested_table_id and array_index?
Thanks for you help.
Flavio
PS: I wrote a 10 lines xsl transformation that I passed on to Saxon together with the 32Mb file. It took less than 1 minute to produce a flat file that was loaded almost instantly by SQL*Loader. So, what I am looking for is a procedure loading this stuff in less than 2 minutes or possibly less.Does the following help
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Dec 27 21:44:53 2005
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> spool registerSchema_&4..log
SQL> set trimspool on
SQL> connect &1/&2
Connected.
SQL> --
SQL> declare
2 result boolean;
3 begin
4 result := dbms_xdb.createResource('/home/&1/xsd/&4',
5 bfilename(USER,'&4'),nls_charset_id('AL32UTF8'));
6 end;
7 /
old 4: result := dbms_xdb.createResource('/home/&1/xsd/&4',
new 4: result := dbms_xdb.createResource('/home/OTNTEST/xsd/GetaxTypes.xsd',
old 5: bfilename(USER,'&4'),nls_charset_id('AL32UTF8'));
new 5: bfilename(USER,'GetaxTypes.xsd'),nls_charset_id('AL32UTF8'));
PL/SQL procedure successfully completed.
SQL> commit
2 /
Commit complete.
SQL> alter session set events='31098 trace name context forever'
2 /
Session altered.
SQL> begin
2 dbms_xmlschema.registerSchema
3 (
4 schemaURL => '&3',
5 schemaDoc => xdbURIType('/home/&1/xsd/&4').getClob(),
6 local => TRUE,
7 genTypes => TRUE,
8 genBean => FALSE,
9 genTables => &5
10 );
11 end;
12 /
old 4: schemaURL => '&3',
new 4: schemaURL => 'private/GetaxTypes.xsd',
old 5: schemaDoc => xdbURIType('/home/&1/xsd/&4').getClob(),
new 5: schemaDoc => xdbURIType('/home/OTNTEST/xsd/GetaxTypes.xsd').getClob(),
old 9: genTables => &5
new 9: genTables => TRUE
PL/SQL procedure successfully completed.
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Dec 27 21:44:55 2005
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> spool registerSchema_&4..log
SQL> set trimspool on
SQL> connect &1/&2
Connected.
SQL> --
SQL> declare
2 result boolean;
3 begin
4 result := dbms_xdb.createResource('/home/&1/xsd/&4',
5 bfilename(USER,'&4'),nls_charset_id('AL32UTF8'));
6 end;
7 /
old 4: result := dbms_xdb.createResource('/home/&1/xsd/&4',
new 4: result := dbms_xdb.createResource('/home/OTNTEST/xsd/PickData.xsd',
old 5: bfilename(USER,'&4'),nls_charset_id('AL32UTF8'));
new 5: bfilename(USER,'PickData.xsd'),nls_charset_id('AL32UTF8'));
PL/SQL procedure successfully completed.
SQL> commit
2 /
Commit complete.
SQL> alter session set events='31098 trace name context forever'
2 /
Session altered.
SQL> begin
2 dbms_xmlschema.registerSchema
3 (
4 schemaURL => '&3',
5 schemaDoc => xdbURIType('/home/&1/xsd/&4').getClob(),
6 local => TRUE,
7 genTypes => TRUE,
8 genBean => FALSE,
9 genTables => &5
10 );
11 end;
12 /
old 4: schemaURL => '&3',
new 4: schemaURL => 'private/PickData.xsd',
old 5: schemaDoc => xdbURIType('/home/&1/xsd/&4').getClob(),
new 5: schemaDoc => xdbURIType('/home/OTNTEST/xsd/PickData.xsd').getClob(),
old 9: genTables => &5
new 9: genTables => TRUE
PL/SQL procedure successfully completed.
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Dec 27 21:44:58 2005
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> spool createTable.log
SQL> --
SQL> connect &1/&2
Connected.
SQL> --
SQL> CREATE TABLE "XML_ORDERS"
2 ("ID" NUMBER(7,0) NOT NULL ENABLE,
3 "XMLFILE" "SYS"."XMLTYPE" ,
4 "INSERTED" DATE DEFAULT sysdate,
5 CONSTRAINT "XML_ORDERS_PK" PRIMARY KEY ("ID") USING INDEX ENABLE
6 ) XMLTYPE COLUMN XMLFILE STORE AS OBJECT RELATIONAL
7 XMLSCHEMA "private/PickData.xsd"
8 ELEMENT "PickData"
9 VARRAY XMLFILE."XMLDATA"."ProdRun"."PickWave" STORE AS TABLE PickWave_TAB
10 (
11 ( primary key (nested_table_id, array_index)
12 ) organization index overflow
13 VARRAY "Customer" STORE AS TABLE Customer_TAB
14 (
15 (primary key (nested_table_id, array_index)
16 ) organization index overflow
17 VARRAY "InvOrder" STORE AS TABLE InvOrder_TAB
18 (
19 (primary key (nested_table_id, array_index)
20 ) organization index overflow
21 )
22 )
23 )
24 /
Table created.
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Dec 27 21:44:59 2005
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> spool insertFile_&3..log
SQL> set trimspool on
SQL> connect &1/&2
Connected.
SQL> --
SQL> set timing on
SQL> set long 10000
SQL> --
SQL> insert into XML_ORDERS (ID, XMLFILE) values (&4, xmltype(bfilename(USER,'&3'),nls_charset_id('AL32UTF8')))
2 /
old 1: insert into XML_ORDERS (ID, XMLFILE) values (&4, xmltype(bfilename(USER,'&3'),nls_charset_id('AL32UTF8')))
new 1: insert into XML_ORDERS (ID, XMLFILE) values (10, xmltype(bfilename(USER,'testcase.xml'),nls_charset_id('AL32UT
8')))
1 row created.
Elapsed: 00:00:00.11
SQL> commit
2 /
Commit complete.
Elapsed: 00:00:00.01
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL*Plus: Release 10.2.0.1.0 - Production on Tue Dec 27 21:44:59 2005
Copyright (c) 1982, 2005, Oracle. All rights reserved.
SQL> spool testcase.log
SQL> set trimspool on
SQL> connect &1/&2
Connected.
SQL> --
SQL> set timing on
SQL> set long 10000
SQL> set pages 0 lines 140
SQL> --
SQL> -- Testcase code here
SQL> --
SQL> set autotrace on explain
SQL> --
SQL> create or replace view PROD_RUN_VIEW
2 (
3 PRODRUNNODE,
4 PRODRUNNR,
5 PRODRUNDATE,
6 PRODRUNID,
7 PRODRUNFINAL
8 )
9 as
10 select EXTRACT(XMLFILE,'/PickData/ProdRun'),
11 EXTRACTVALUE(XMLFILE , '/PickData/ProdRun/Nr'),
12 TO_DATE(EXTRACTVALUE(XMLFILE, '/PickData/ProdRun/Date'),'DDMMYYYY'),
13 ID,
14 EXTRACTVALUE(XMLFILE,'/PickData/ProdRun/Final')
15 from XML_ORDERS
16 /
View created.
Elapsed: 00:00:00.09
SQL> create or replace view PICK_WAVE_VIEW
2 (
3 PICKWAVENODE,
4 PICKWAVENR,
5 PICKWAVEPRODLINE,
6 PICKWAVETOUR,
7 PICKWAVETOURSEQ,
8 PRODRUNNR,
9 PRODRUNDATE,
10 PRODRUNID,
11 PRODRUNFINAL
12 )
13 as
14 select value(PW),
15 extractValue(value(PW),'/PickWave/Nr'),
16 TO_NUMBER(EXTRACTVALUE(value(PW),'/PickWave/ProdLine')),
17 extractValue(value(PW),'/PickWave/Tour'),
18 TO_NUMBER(extractValue(value(PW),'/PickWave/TourSeq')),
19 PRODRUNNR,
20 PRODRUNDATE,
21 PRODRUNID,
22 PRODRUNFINAL
23 FROM PROD_RUN_VIEW, table(xmlsequence(extract(PRODRUNNODE,'/ProdRun/PickWave'))) PW
24 /
View created.
Elapsed: 00:00:00.09
SQL> create or replace view CUSTOMER_VIEW
2 (
3 CUSTOMERNODE,
4 CUST,
5 MOD,
6 TOD,
7 SEQ,
8 PICKWAVENR,
9 PICKWAVEPRODLINE,
10 PICKWAVETOUR,
11 PICKWAVETOURSEQ,
12 PRODRUNNR,
13 PRODRUNDATE,
14 PRODRUNFINAL,
15 PRODRUNID
16 )
17 as
18 select value(CUST),
19 EXTRACTVALUE(VALUE(CUST), '/Customer/Cust'),
20 EXTRACTVALUE(VALUE(CUST), '/Customer/Mod'),
21 EXTRACTVALUE(VALUE(CUST), '/Customer/Tod'),
22 TO_NUMBER(EXTRACTVALUE(VALUE(CUST), '/Customer/Seq')),
23 PICKWAVENR,
24 PICKWAVEPRODLINE,
25 PICKWAVETOUR,
26 PICKWAVETOURSEQ,
27 PRODRUNNR,
28 PRODRUNDATE,
29 PRODRUNFINAL,
30 PRODRUNID
31 from PICK_WAVE_VIEW, table(xmlsequence(extract(PICKWAVENODE,'/PickWave/Customer'))) CUST
32 /
View created.
Elapsed: 00:00:00.10
SQL>
SQL> create or replace view INVOICE_ORDER_VIEW
2 (
3 INVORDERNR,
4 ITEM,
5 QTY,
6 PRIORITY,
7 REORDERING,
8 HLORDER,
9 DELDATE,
10 CUST,
11 MOD,
12 TOD,
13 SEQ,
14 PICKWAVENR,
15 PICKWAVEPRODLINE,
16 PICKWAVETOUR,
17 PICKWAVETOURSEQ,
18 PRODRUNNR,
19 PRODRUNDATE,
20 PRODRUNFINAL,
21 PRODRUNID
22 )
23 as
24 SELECT EXTRACTVALUE(VALUE(INV), '/InvOrder/Nr'),
25 EXTRACTVALUE(VALUE(INV), '/InvOrder/Item'),
26 EXTRACTVALUE(VALUE(INV), '/InvOrder/Qty'),
27 EXTRACTVALUE(VALUE(INV), '/InvOrder/Priority'),
28 EXTRACTVALUE(VALUE(INV), '/InvOrder/Reordering'),
29 EXTRACTVALUE(VALUE(INV), '/InvOrder/HlOrder'),
30 TO_DATE(EXTRACTVALUE(VALUE(INV), '/InvOrder/DelDate'),'DDMMYYYY'),
31 CUST,
32 MOD,
33 TOD,
34 SEQ,
35 PICKWAVENR,
36 PICKWAVEPRODLINE,
37 PICKWAVETOUR,
38 PICKWAVETOURSEQ,
39 PRODRUNNR,
40 PRODRUNDATE,
41 PRODRUNFINAL,
42 PRODRUNID
43 FROM CUSTOMER_VIEW, table(xmlsequence(extract(CUSTOMERNODE,'Customer/InvOrder'))) INV
44 /
View created.
Elapsed: 00:00:00.13
SQL> select * from INVOICE_ORDER_VIEW
2 /
IIO0000461 100000036 20 1 0 CSO000743 15-NOV-05 100000013
FO DDU 6 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000463 100000045 20 1 0 CSO000743 15-NOV-05 100000013
FO DDU 6 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000473 100000036 20 1 0 CSO000746 15-NOV-05 100000143
FO DDU 7 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000475 100000045 20 1 0 CSO000746 15-NOV-05 100000143
FO DDU 7 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000469 100000036 20 1 0 CSO000745 15-NOV-05 100000140
FO DDU 3 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000471 100000045 20 1 0 CSO000745 15-NOV-05 100000140
FO DDU 3 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000489 100000036 20 0 0 CSO000751 15-NOV-05 100000148
FO DDU 10 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000491 100000045 20 1 0 CSO000751 15-NOV-05 100000148
FO DDU 10 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000481 100000036 20 0 0 CSO000748 15-NOV-05 100000146
FO DDU 9 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000483 100000045 20 1 0 CSO000748 15-NOV-05 100000146
FO DDU 9 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000485 100000036 20 0 0 CSO000750 15-NOV-05 100000147
FO DDU 4 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000487 100000045 20 1 0 CSO000750 15-NOV-05 100000147
FO DDU 4 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000457 100000036 20 1 0 CSO000742 15-NOV-05 100000006
FO DDU 5 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000459 100000045 20 1 0 CSO000742 15-NOV-05 100000006
FO DDU 5 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000477 100000036 20 1 0 CSO000747 15-NOV-05 100000145
FO DDU 8 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000479 100000045 20 1 0 CSO000747 15-NOV-05 100000145
FO DDU 8 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000465 100000036 20 1 0 CSO000744 15-NOV-05 100000114
FO DDU 2 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
IIO0000467 100000045 20 1 0 CSO000744 15-NOV-05 100000114
FO DDU 2 IPW0000017 1 00000043_078
1
5 15-NOV-05 1 10
18 rows selected.
Elapsed: 00:00:00.22
Execution Plan
Plan hash value: 1730223965
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
| 0 | SELECT STATEMENT | | 18 | 10278 | 877 (0)| 00:00:11 |
| 1 | NESTED LOOPS | | 18 | 10278 | 877 (0)| 00:00:11 |
| 2 | NESTED LOOPS | | 18 | 8424 | 841 (0)| 00:00:11 |
| 3 | MERGE JOIN CARTESIAN | | 18 | 4680 | 805 (0)| 00:00:10 |
| 4 | TABLE ACCESS FULL | XML_ORDERS | 1 | 67 | 3 (0)| 00:00:01 |
| 5 | BUFFER SORT | | 18 | 3474 | 802 (0)| 00:00:10 |
| 6 | INDEX FAST FULL SCAN| SYS_IOT_TOP_64187 | 18 | 3474 | 802 (0)| 00:00:10 |
|* 7 | INDEX UNIQUE SCAN | SYS_IOT_TOP_64185 | 1 | 208 | 2 (0)| 00:00:01 |
|* 8 | INDEX RANGE SCAN | SYS_C008783 | 1 | | 0 (0)| 00:00:01 |
|* 9 | INDEX UNIQUE SCAN | SYS_IOT_TOP_64183 | 1 | 103 | 2 (0)| 00:00:01 |
|* 10 | INDEX RANGE SCAN | SYS_C008785 | 1 | | 0 (0)| 00:00:01 |
Predicate Information (identified by operation id):
7 - access("NESTED_TABLE_ID"="CUSTOMER_TAB"."SYS_NC0000800009$")
8 - access("NESTED_TABLE_ID"="CUSTOMER_TAB"."SYS_NC0000800009$")
9 - access("NESTED_TABLE_ID"="PICKWAVE_TAB"."SYS_NC0000800009$")
filter("NESTED_TABLE_ID"="XML_ORDERS"."SYS_NC0001000011$")
10 - access("NESTED_TABLE_ID"="PICKWAVE_TAB"."SYS_NC0000800009$")
Note
- dynamic sampling used for this statement
SQL> quit
Disconnected from Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
C:\oracle\xdb\otn\347125>You were sequencing the ProdRun node, which is a mistake. Only nodes which occur multiple times should be sequenced... -
How do I pass large XML Data structure into an Oracle 8.1.7 Database
I need to pass a complex nested (10 levels) XML structure into an Oracle 8.1.7 database - Does any one have any idea how I can do this? Because it is an 8.1.7 database we cannot use nested sql objects or CLOB objects to pass data into the database.
This is an urgent request for any knowledgePossible Solution:
Create from your dehydration store, that's a Oracle 9.2 or later database, a database link to query the table from this database. In BPEL create a DBAdapter to query this table.
Marc -
Directory structure question...
I've been w/ three different companies doing Java development now, and each time I've come in once the project is already in progress and the directory structure is set up. What I see is a similarity:
com.<company name>.<project>.<sub-units>
examples:com.delta.kiosk.server
com.delphi.shipping.guiIs this a common way of laying out directories and if so, what is the benefit (other than standardization)?I always figures that it was primarily a namespace issue.
org.apache.ecs.Attributes
org.xml.sax.Attributes
are examples of class names that would have resulted in a collision without the prefixes. A full class name has the package name before it so
String
java.lang.String
are the same thing, String is just shorthand for the latter. But if there are two of the same class then the prefix will help the compiler know where the class is supposed to come from. com.<company name>.<project>.<class> is a good way to ensure that you will not encounter a collision. -
Sender Content Conversion - Deep Structure Question
Hello!
I receive a file that has the following format:
HEADER (occurrence = 1)
INVOICES (occurrence = n)
HEAD (occurrence = 1)
DETAIL (occurrence = n)
TRAILER (occurrence = 1)
The file looks something like this:
1Field1Field2...Fieldn
2Field1Field2...Fieldn
3Field1Field2...Fieldn
3Field1Field2...Fieldn
3Field1Field2...Fieldn
2Field1Field2...Fieldn
3Field1Field2...Fieldn
3Field1Field2...Fieldn
3Field1Field2...Fieldn
4Field1
Where 1 is the keyfieldvalue for Header, 2 for the Invoice Header, 3 for the Invoice Detail and 4 for the Trailer.
Is it possible to manage this kind of file using the File Content Conversion. I'm haven't been able to get it to work. I don't wan't to split the file into separate msgs so I'm not using the option Recordsets per message.
I'll greatly appreciate any help, suggestions.
Kind Regards,
Carlos LópezThank you all for your replies.
Ramkiran, I tried your suggestion but I still get an error:
Conversion of file content to XML failed at position 0: java.lang.Exception: ERROR consistency check in recordset structure validation (line no. 5: missing structure(s) before type 'INVOICE_HEADER'
It seems as if it was expecting a file with the following structure:
HEADER
INVOICE_HEADER1
INVOICE_HEADER2
INVOICE_HEADERn
INVOICE_DETAIL1
INVOICE_DETAIL2
INVOICE_DETAILn
TRAILER
Instead of:
HEADER
INVOICE_HEADER1
INVOICE_DETAIL1_1
INVOICE_DETAIL1_2
INVOICE_HEADER2
INVOICE_DETAIL2_1
INVOICE_DETAIL2_2
INVOICE_DETAIL2_n
INVOICE_HEADERn
INVOICE_DETAILn_1
INVOICE_DETAILn_2
INVOICE_DETAILn_n
TRAILER
This is how my input file looks like: (line 5 is in BOLD):
A9166407 <---HEADER
11231200 <----INVOICE_HEADER1
20014014 <----INVOICE_DETAIL1_1
200231 <----INVOICE_DETAIL1_2
11231200 <----INVOICE_HEADER2
20014014 <----INVOICE_DETAIL2_1
20025077 <----INVOICE_DETAIL2_2
20014014 <----INVOICE_DETAIL2_3
20025077 <----INVOICE_DETAIL2_4
99999999 <----TRAILER
It's complaining about line 5 which is the Second Invoice Header.
I defined the Recordset Structure like this:
HEADER,1,INVOICE_HEADER,*,INVOICE_DETAIL,*,TRAILER,1
Kind Regards,
Carlos López Hernández
Edited by: Carlos Lopez Hernandez on Feb 23, 2009 2:26 PM
Edited by: Carlos Lopez Hernandez on Feb 23, 2009 2:32 PM -
Automator: Copy Finder Items Question
Hola,
Quick question about the Copy Finder Items action in automator: the "replace existing files" option, how is sameness determined? In other words, according to what criteria does Automator determine that two files are the same, and so eligible for replacement in the destination folder when that option is chosen? For example, would file Mydog.doc, modified 10/14/05, 230k be viewed as the same thing as Mydog.doc., modifided 2/21/06, 150k?
Cheers,
stuAs far as the Finder is concerned, the comparison is based on file name only.
It doesn't care about file size or modification date. If the name is the same the existing file will be replaced. -
Reports 9i XML output structure
When you set the output format of a report to XML, what is the structure of the resulting XML file? I saw a partial example in Oracle9iAS Reports Services and XML on page 14-5. However, the comment at the top of the example said that it was generated by Reports 6. Does Reports 9i produce the same XML output as version 6 did?
Corey,
Does Reports 9i produce the same XML output as version 6 did? You are right except there has been some bug fixes and few enhamcnements. The structure is same for a specific reports ( specifically the specific datamodel) both in 6i / 9i.
You can use any free DTD generator to generate DTD / schema for the reports XML output.
Thanks
The Oracle Reports team -
Hello, I have been asked to research a way to export data from the SAP BW into a remote application. I know nothing about SAP and I have a few questions. We would like to take data from SAP BW and put it in an XML file. Then we would like to automatically invoke a remote web service which will parse the data into the other applications database.
My first questions is can SAP BW export some of its selected data into an XML file? If so how is this done (what tools, components, applications, etc. are necessary) and what is the level of complexity?
My second question is can a remote web service be invoked automatically form the SAP BW and can the previously mentioned XML file be sent out to the web service for parsing and loading? If so how is this done (what tools, components, applications, etc. are necessary)and what is the level of complexity?
Any help you can provide would be very much appreciated.
Thanks in advance!
Brett LewinskiThis can be done in BW.
Try the links given below, also there is a How to document available from SAP on this.
http://help.sap.com/saphelp_bw33/helpdata/en/9f/9b8f3c855f0454e10000000a11405a/content.htm
http://www.sapteched.com/presentations/session.asp?sid=140
Thanks.
Maybe you are looking for
-
Display on external monitor is pixelated
I am at wit's end, so figured I'd check in with the brain trust. I have a SONY DHR1000 deck hooked up to the G5 via fire wire. The deck is hooked up to a regular TV monitor via standard RCA cable. I've changed the cables and have swapped my camera wi
-
HT4623 setting up a hotspot when there is no setting for it
I don't know how to set up a hotspot with my iphone. There is no hotspot setting on the phone.
-
Error: jndi.properties (No such file or directory)
Hi, I created my EJB and a desktop application in the NetBeans. I load my EJB on GlassFish I still load my appCliente on NetBeans, nice it works. But when I try to run my appClient just clicking on its icon in its directory it doesn't work. The messa
-
Disable Password Lockout Due to Incorrect Password Entered
Would like to disable password lockout if a user enters the wrong password too many times. Does anyone know how to set this up for portal user's?
-
Miliseconds in the trace files
I'm using the tkprof tool to analyze a procedure, but in the time columns there appear only 0.00. Is there a way to obtain milliseconds instead of 'centiseconds' in the trace files?