What is XSLT? 
Today, I’ll cover the basic of the XSLT. Basic development of BI Publisher RTF Template doesn’t require the XSLT coding. However, when you start developing advanced reports having a good understanding of the XSLT will help you to develop the RTF Template efficiently and provide richer functionality. I’ll cover the benefit of using XSLT at the end of this posting. 

XSLT stands for XSL Transformations and XSL stands for Extensible Style sheet Language. XSLT is a language for transforming XML documents into another form of documents such as XML, HTML, XHTML, etc. When you use XSLT to transform the original XML documents you will also use XPath to navigate through the documents. So in this process of transforming the documents you use a combination of XSLT and XPath together. 

How to use? 
Here is a list of basic steps to use XSLT. 

1. Declare XSL namespace 
2. Create XSL style sheet 
3. Add a link to the style sheet 

1. Declare XSL namespace 
First you need to declare XSL namespace like follows at the top of the XML document.

<xsl:stylesheet version=”1.0″
xmlns:xsl=”http://www.w3.org/1999/XSL/Transform”>

2. Create XSL style sheet 
Then you can start developing the XSL style sheet. How you can develop the style sheet will be covered later. 

3. Add a link to the style sheet 
Once you have created the style sheet now you can add a link to the style sheet in the original XML document. Then when you process the XML document whatever the standard XSL processor you’re using would transform the XML document following the transformation rules designed in the XSL style sheet is linked in the XML document. 

Example:

<?xml-stylesheet type=”text/xsl” href=”sample.xsl”?> 
XSL Element (or function)

XSL transformation rules are defined with XSL Elements. Here is a set of the most commonly used XSL elements.

  • <xsl:template>
  • <xsl:value-of>
  • <xsl:for-each>
  • <xsl:sort>
  • <xsl:if>
  • <xsl:choose>
  • <xsl:apply-templates>
Since most of the XSLT coding can be also done by the native BI Publisher coding, at each of the following Element example section I’ll also show how to do the same with the BI Publisher coding.

XSL:TEMPLATE
This element is used to specify what part of the XML document should be transformed or be applied with the rules described in the XSL stylesheet. You can use ‘match’ attribute specifying the section of the XML with XPath. For example, if you specify ‘/’ (Root) then the XSL stylesheet will be applied to the entire XML document.

Example: 

<xsl:template match=”/”> 

XSL:VALUE-OF
This element is used to retrieve a value from a specified Element or Attribute. For example, if you used this element specifying ‘/DATA/DEPARTMENT/NAME’ then you can retrieve a value that is presented in the NAME element in the XML document.

Example:

<xsl:value-of select=’/DATA/DEPARTMENT/NAME’/> 
With BI Publisher tags, you can just type the following to do the same.
<?/DATA/DEPARTMENT/NAME?> 

XSL:FOR-EACH
When you just use the <xsl:value-of> element you will get the first value of the specified element. With the above case, you will get the first Department name. But what if you have 5 departments and want to display all the names together?

You can use this ‘for-each’ element to repeat through a specified node. It works the same way as ‘for loop’ in any typical programming language such as C, Java. For example, if you specify ‘/DATA/DEPARTMENT’ as a node and use the ‘for-each’ element to repeat then the XSL processor will repeat through the Department node and display all the department names.

Example:

<xsl:for-each select=’/DATA/DEPARTMENT’>
  <xsl:value-of select=’NAME’/>
</xsl:for-each>
With BI Publisher tags, you can type the following to do the same.
<?for-each:/DATA/DEPARTMENT?>
  <?NAME?>
<?end for-each?>

XSL:SORT
Inside the previous ‘for-each’ loop you might want to sort the data by alphabetically or based on the ID, etc. You can use this ‘sort’ element to do the sorting.

Example: 

<xsl:for-each select=’/DATA/DEPARTMENT’>
<xsl:sort select=’NAME’/>
  <xsl:value-of select=’NAME’/>
</xsl:for-each>
Also you can specify the data type and whether it should be ascending or descending order.

Example: 

  <xsl:sort select=’NAME’ data-type=’text’ order=’descending’/>
With BI Publisher you can do the following to achieve the same. 
  <?sort:NAME;’ascending’;data-type=’text’?>

XSL:IF
You can use this element to have a condition in the XSL transformation logic. This is also pretty much the same as other programming language’s ‘if’ condition. For example, if you want to display manager name only when Department name is ‘Consulting’ you can specify something like the below.

Example: 

<xsl:for-each select=’/DATA/DEPARTMENT’>
  <xsl:if test=”NAME=’Consulting’”>
    <xsl:value-of select=’MANAGER_NAME’/>
  </xsl:if>
</xsl:for-each>
You can do the same with BI Publisher tags as follows.
<?for-each:/DATA/DEPARTMENT?>
  <?if:NAME=’Consulting’?>
    <?NAME?>
  <?end if?>
<?end for-each?>
XSL:CHOOSE
As an alternative or for better reasons you can also use CHOOSE/WHEN elements to do the condition. One thing to note is that XSL doesn’t support IF/ELESE condition as native, so if you have multiple conditions to use together in a form of IF/ELSE then CHOOSE/WHEN/OTHERWISE elements would serve you better.

Example: 

<xsl:for-each select=’/DATA/DEPARTMENT’>
  <xsl:choose>
  <xsl:when ”NAME=’Consulting’”>
    <xsl:value-of select=’MANAGER_NAME’/> 
    <xsl:value-of select=’DEPARTMENT_NAME’/>
  </xsl:when>
  <xsl:otherwise>
    <xsl:value-of select=’DEPARTMENT_NAME’/>
  </xsl:otherwise>
</xsl:for-each>
With BI Publisher you can do the below to have the same condition. 
<?for-each:/DATA/DEPARTMENT?>
  <?choose:?>
  <?when:NAME=’Consulting’>
    <?MANAGER_NAME?>
    <?DEPARTMENT_NAME?>
  <?end when?>
  <?otherwise:?>
    <?DEPARTMENT_NAME?>
  <?end otherwise?>
  <?end choose?>
<?end for-each?>
Why XSLT is needed for BI Publisher?

Though you can type any XSLT coding and BI Publisher can understand it, typical RTF Template development doesn’t require the use of the XSLT. In fact BI Publisher’s tags, which are surrounded by ‘?’ marks, covers the native XSLT functionality for the most so that you don’t need to type the XSLT code. As you have seen, what you can do with XSLT can also be done by the BI Publisher tags and visaversa. When you develop the RTF Template you can use the BI Publisher’s tags then at the run time BI Publisher translate the tags to the XSL codes internally. BI Publisher’s tags are there to make the template development much easier for those who do not have any XML/XSL or programming experience.

However, there are certain situations where you might want to use XSLT over BI Publisher’s tags. Such situation includes the Chart development and variable handling. As you might have known behind the Chart definition is XSLT code. You can insert a chart from the Template Builder (MS Word Add-in) Chart wizard to start with. But once you want to customize the default chart formatting or logic’s to handle the data then you need to modify the XSLT code behind the Chart definition.

Also, sometimes it’s very useful when you want to use variables. There is a BI Publisher’s tag for variable handling but sometimes I find using XSLT’s variable is easier though it depends on the requirements.

Lastly, you can create a set of custom functions in XSL template and call them from your RTF Template as external functions. This is very useful especially when you have common logic’s that contain custom functions or calculations and can be used in many different BI Publisher’s text forms or different templates, yet don’t want to maintain them in each text form or each template. Once you have developed a single XSL template where you create such logics or functions then you can import the XSL template from any of your RTF template and call any of the custom function to do the same process. 

A journey from Oracle E-Business Suite R12.1 to R12.2:

I will try to analyze architectural overview of the latest updates, installation and upgrade options, new configuration options, and new tools for hot-cloning and automated “lights out” cloning in R12.2.

Oracle E-Business Suite 12.1 Architecture
Oracle E-Business Suite 12.2 Architecture

Release 12.2 will replace Oracle Containers for Java (OC4J) 10g with WebLogic Server 11g

Release 12.2 Database tier will run RDBMS 11gR2 to support online patching

There will be number of updates coming in release R12.2, from a technology stack perspective, EBS 12.2 will be notable for two things:

1-Replacing Oracle Containers for Java (OC4J) 10g with WebLogic Server 11g

EBS 12.2 will use WebLogic Server from Fusion Middleware 11g in place of OC4J 10g as part of the release’s internal technology stack. Other additional new Fusion Middleware 11g components used will include WebLogic JSP and UIX 11g

2-Online Patching support via 11gR2 Edition-Based Redefinition

EBS 12.2 will use the 11gR2 Database’s Edition-Based Redefinition features to provide support for Online Patching. Edition-Based Redefinition is really exciting new technology. From the 11gR2 Application Developer’s Guide:

“Edition-based redefinition enables you to upgrade the database component of an application while it is in use, thereby minimizing or eliminating down time.

“To upgrade an application while it is in use, you copy the database objects that comprise the application and redefine the copied objects in isolation. Your changes do not affect users of the application—they continue to run the unchanged application. When you are sure that your changes are correct, you make the upgraded application available to all users.”

It is not released yet but It will include significant changes to the Application Server architecture, It will use RDBMS Version 11gR2 or higher, It will change Patching, Cloning, the User Experience

Comparison of Oracle E-Business Suite 12.1 vs 12.2 Installation Steps
Oracle E-Business Suite 12.1 installation

Database Technology Stack
Database
Apps Technology Stack
Apps File System

Oracle E-Business Suite 12.2 installation
Following will be main features planned for R12.2 installations:
Native Technology Stack Install
Database RMAN Restore
Dual File System
Optional 11g Home for Upgrades
WebLogic Server (WLS)

Graphical UI to manage WLS Domain
Administration (Start/Stop WLS Instances)
Configuration (Config and Deploy, Cluster, Host, JDBC, JMS Messaging)
Monitoring (Server & Application Performance)
Troubleshooting (Performance Tuning, Log Viewer)

Following will be main features planned for R12.2 Native Technology Stack Install:
Better integration with Oracle
Universal Installer
Faster Technology Stack Installation
Silent-mode calls to install and configure Oracle Database 11.2, WebLogic Server (WLS) and Oracle HTTP Server (OHS)
AutoConfig Integration

Following will be main features planned for R12.2 Database RMAN Restore:
Simplifies Integration with Grid Infrastructure
Seamless integration with different storage methods (OCFS2, NFS, etc)
Faster integration with Automatic Storage Management (ASM)

Following will be main features planned for R12.2 Dual File System:
Online Patching allows users to continue using the application while patching
Dual File System allows replacing files with minimum downtime
Improves High Availability

Dual Port Pool configuration
Easier port assignments
Allows port customization in runtime and patching file systems

Following will be main features planned for R12.2 Optional 11g Home for Upgrades:
Allow integration with an existing 11gR2 Oracle Home
Simplified Technology Stack Upgrade
Reduced Upgrade time

Following will be main features planned for R12.2 WebLogic Server (WLS):
Graphical User Interface
WebLogic Scripting Tool (WLST)
High Availability & Failover
Consolidated Administration, Configuration and Deployment
Monitoring & Messaging
Troubleshooting framework
Integration with OAM

Java Runtime Environment 1.7.0_67 (a.k.a. JRE 7u67-b01) and later updates on the JRE 7 codeline are now certified with Oracle E-Business Suite Release 11i and 12.0, 12.1, and 12.2 for Windows-based desktop clients.
Effects of new support dates on Java upgrades for EBS environments
Support dates for the E-Business Suite and Java have changed.  Please review the sections below for more details:
  • What does this mean for Oracle E-Business Suite users?
  • Will EBS users be forced to upgrade to JRE 7 for Windows desktop clients?
  • Will EBS users be forced to upgrade to JDK 7 for EBS application tier servers?
All JRE 6 and 7 releases are certified with EBS upon release
Our standard policy is that all E-Business Suite customers can apply all JRE updates to end-user desktops from JRE 1.6.0_03 and later updates on the 1.6 codeline, and from JRE 7u10 and later updates on the JRE 7 codeline.  We test all new JRE 1.6 and JRE 7 releases in parallel with the JRE development process, so all new JRE 1.6 and 7 releases are considered certified with the E-Business Suite on the same day that they’re released by our Java team.

You do not need to wait for a certification announcement before applying new JRE 1.6 or JRE 7 releases to your EBS users’ desktops.

What’s new in this release?
JRE 1.7.0_67 fixes a regression in JRE 1.7.0_65 which prevented applets launching when using a “java_ arguments” parameter. This is the only change, it does not include any further security enhancements. Oracle E-Business Suite users are unlikely to be affected by this issue so moving to this release is optional, see the Update Release Notes for further information. 
JRE 1.7.0_67 is available for download through the usual Java and Oracle Java SE Downloads public sites. If you are already running 1.7.0_65 auto-update will not be triggered to upgrade to 1.7.0_67. The standard release is also available through Patch 19295656 as well as a special release which has the auto-update function turned off through Patch 19295660
32-bit and 64-bit versions certified
This certification includes both the 32-bit and 64-bit JRE versions for various Windows operating systems. See the respective Recommended Browser documentation for your EBS release for details.
Where are the official patch requirements documented?
All patches required for ensuring full compatibility of the E-Business Suite with JRE 7 are documented in these Notes:

For EBS 11i: 

For EBS 12.0, 12.1, 12.2

EBS + Discoverer 11g Users 

This JRE release is certified for Discoverer 11g in E-Business Suite environments with the following minimum requirements:
Worried about the ‘mismanaged session cookie’ issue? 
No need to worry — it’s fixed.  To recap: JRE releases 1.6.0_18 through 1.6.0_22 had issues with mismanaging session cookies that affected some users in some circumstances.

The fix for those issues was first included in JRE 1.6.0_23. These fixes will carry forward and continue to be fixed in all future JRE releases on the JRE 6 and 7 codelines.  In other words, if you wish to avoid the mismanaged session cookie issue, you should apply any release after JRE 1.6.0_22 on the JRE 6 codeline, and JRE 7u10 and later JRE 7 codeline updates.

Implications of Java 6 End of Public Updates for EBS Users
The Support Roadmap for Oracle Java is published here:
The latest updates to that page (as of Sept. 19, 2012) state (emphasis added):
Java SE 6 End of Public Updates Notice 
After February 2013, Oracle will no longer post updates of Java SE 6 to its public download sites. Existing Java SE 6 downloads already posted as of February 2013 will remain accessible in the Java Archive on Oracle Technology Network. Developers and end-users are encouraged to update to more recent Java SE versions that remain available for public download. For enterprise customers, who need continued access to critical bug fixes and security fixes as well as general maintenance for Java SE 6 or older versions, long term support is available through Oracle Java SE Support .
What does this mean for Oracle E-Business Suite users?
EBS users fall under the category of “enterprise users” above.  Java is an integral part of the Oracle E-Business Suite technology stack, so EBS users will continue to receive Java SE 6 updates from February 2013 to the end of Java SE 6 Extended Support in June 2017.
In other words, nothing changes for EBS users after February 2013. 

EBS users will continue to receive critical bug fixes and security fixes as well as general maintenance for Java SE 6 until the end of Java SE 6 Extended Support in June 2017. 

How can EBS customers obtain Java 6 updates after the public end-of-life?
EBS customers can download Java 6 patches from My Oracle Support.  For a complete list of all Java SE patch numbers, see:
Both JDK and JRE packages are contained in a single combined download after 6u45.  Download the “JDK” package for both the desktop client JRE and the server-side JDK package.  
Will EBS users be forced to upgrade to JRE 7 for Windows desktop clients?
This upgrade is highly recommended but remains optional while Java 6 is covered by Extended Support. Updates will be delivered via My Oracle Support, where you can continue to receive critical bug fixes and security fixes as well as general maintenance for JRE 6 desktop clients. 
Java 6 is covered by Extended Support until June 2017.  All E-Business Suite customers must upgrade to JRE 7 by June 2017.
Coexistence of JRE 6 and JRE 7 on Windows desktops 
The upgrade to JRE 7 is highly recommended for EBS users, but some users may need to run both JRE 6 and 7 on their Windows desktops for reasons unrelated to the E-Business Suite.
Most EBS configurations with IE and Firefox use non-static versioning by default. JRE 7 will be invoked instead of JRE 6 if both are installed on a Windows desktop. For more details, see “Appendix B: Static vs. Non-static Versioning and Set Up Options” in Notes 290807.1 and 393931.1.
Applying Updates to JRE 6 and JRE 7 to Windows desktops
Auto-update will keep JRE 7 up-to-date for Windows users with JRE 7 installed. 
Auto-update will only keep JRE 7 up-to-date for Windows users with both JRE 6 and 7 installed. 
JRE 6 users are strongly encouraged to apply the latest Critical Patch Updates as soon as possible after each release. The Jave SE CPUs will be available via My Oracle Support.  EBS users can find more information about JRE 6 and 7 updates here:
The dates for future Java SE CPUs can be found on the Critical Patch Updates, Security Alerts and Third Party Bulletin.  An RSS feed is available on that site for those who would like to be kept up-to-date.
What do Mac users need?
Mac users running Mac OS X 10.9 can run JRE 7 plug-ins.  See this article: 
  • EBS Release 12 Certified with Mac OS X 10.9 with Safari 7 and JRE 7

Will EBS users be forced to upgrade to JDK 7 for EBS application tier servers?

JRE is used for desktop clients.  JDK is used for application tier servers 
JDK upgrades for E-Business Suite application tier servers are highly recommended but currently remain optional while Java 6 is covered by Extended Support. Updates will be delivered via My Oracle Support, where you can continue to receive critical bug fixes and security fixes as well as general maintenance for JDK 6 for application tier servers. 

Java SE 6 is covered by Extended Support until June 2017.  All EBS customers with application tier servers on Windows, Solaris, and Linux must upgrade to JDK 7 by June 2017. EBS customers running their application tier servers on other operating systems should check with their respective vendors for the support dates for those platforms.

References
Most of users face issue running Oracle forms on Microsoft Internet Explorer 8 (IE8) or later versions which causes the page to redirect to following url:

res://ieframe.dll/acr_depnx_error.htm#<domain>,http://<server>:<port>/forms/frmservlet?config=<config>

Internet explorer has closed this webpage to help protect your computer
A malfunctioning or malicious add-on has caused Internet Explorer to close this webpage.

We were unable to return you to the page you were viewing. Internet Explorer has stopped trying to restore this website. It appears that the website continues to have a problem.

Solution-1:
1) Take backup of jvm.dll located at c:Program FilesOracleJInitiator1.3.1.xbinhotspot directory. (Depending on JInitiator version you have)
2) Copy jvm.dll from C:Program FilesJavajre1.6.0_07binclient (or whichever highest version of jre you have) to c:Program FilesOracleJInitiator 1.3.1.xbinhotspot
3) Clear browser cache and also Oracle Jar cache
For XP:
(Remove all files from c:documents and settings<username>Oracle Jar cache)

For Vista/7/8
(Remove all files from c:users<username>Oracle Jar cache)
4) Close all the browsers and restart.

Solution-2:
In case if you are unable to find the jvm.dll in that location or if the above solution didn’t work for you, you can download the working jvm.dll from here.

I hope your issue should have been resolved now !

Here is how the Due date calculation works:
—————————————————————
-> Generally,  Due date get calculated based on the most recent of the available start dates. Most recent available start date is derived based on the following formula.

Greatest( Goods_Received_Date + Receipt_Acceptance_Days, Invoice_Date, Terms_Date ).

->In the algorithm above, Goods_Received_Date is a date that gets populated on the invoice based on terms_date_basis at supplier/site level.

a. If terms_date_basis = ‘Goods Received’ then, Goods_Received_Date get populated.

b. If terms_date_basis = ‘Invoice Received’ or anything else then, Goods_Received_Date is null.

-> Receipt_Acceptance_Days is the number of days defined for ‘Receipt Acceptance Days’ under the Invoice tab in Payables Options.

->So, the due date basis is the most recent of INVOICE DATE, TERMS DATE, GOODS RECEIVED DATE+RECEIPT ACCEPTANCE DAYS.

->In case of a matched invoice, the system considers the Receipt Transaction date from the
Receipt for the calculation of a recent start date, because sometimes the GOODS RECEIVED DATE is null.  This functionality exists from 11i beginning only. Check bug#1655225 for details.

a.So first system determines recent date of GOODS RECEIVED DATE+RECEIPT ACCEPTANCE DAYS and RECEIPT TRANSACTION DATE.

b.After that again checks most recent date again from the formula defined.

—————————————————————————–
If the customer doesn’t want the system to use ‘Receipt dates’ then disable ‘Recalculate Payment Schedules’.

If  the customer wants recalculation, then the system considers ‘Receipt date’ for a matched invoice.