EXSLT
Hi,
Does Oracles XSLT processor in 10g support EXSLT? If not, how can I gain advanced date transformations using XSLT and Oracle?
Regards
Oracle XDK 10g does have nice support for calling Java extension functions,
for example, see this article:
http://www.devx.com/Java/Article/31675/0/page/1
The problem is that it's not portable, which might be acceptable as well,
but Oracle XDK makes it impossible to craft portable functions
as described here:
http://www.exslt.org/howto.html#function-portability
For example, if you try this:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exslt-math="http://exslt.org/math"
xmlns:ora-math="http://www.oracle.com/XSL/Transform/java/java.lang.Math"
extension-element-prefixes="ora-math exslt-math"
exclude-result-prefixes="xsl ora-math exslt-math">
<xsl:import href="....exslt/functions/sqrt/math.sqrt.template.xsl" />
<xsl:template name="magnitude">
<xsl:param name="u"/>
<xsl:param name="v"/>
<xsl:choose>
<xsl:when test="function-available('exslt-math:sqrt')">
<xsl:value-of select="exslt-math:sqrt( ($u*$u) + ($v*$v) )" />
</xsl:when>
<xsl:when test="function-available('ora-math:sqrt')">
<xsl:value-of select="ora-math:sqrt( ($u*$u) + ($v*$v) )" />
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="exslt-math:sqrt">
<xsl:with-param name="number" select="($u*$u) + ($v*$v)" />
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
The Oracle XSLT engine complains:
XML-22016: (Error) Extension function namespace should start with
'http://www.oracle.com/XSL/Transform/java/'.
This paranoid attitude means that the EXSLT stuff cannot even be in an Oracle stylesheet, even if it is never invoked. A more open minded live-n-let-live approach woud allow some approximation to portability.
Mik
P.S. The standard EXSLT library has a bug for this example,
you have to change a line in math.sqrt.template.xsl from
<xsl:call-template name="sqrt">
to
<xsl:call-template name="math:sqrt">
Similar Messages
-
Xalan and EXSLT problems - namespace issue?
Hi all,
I have some code that runs fine when using some older Xalan libraries:
import org.apache.xalan.extensions.ExpressionContext;
import org.apache.xpath.NodeSet;I was trying to upgrade to use the latest libraries (from what I understand are included in the latest version of the JDK):
import com.sun.org.apache.xalan.internal.extensions.ExpressionContext;
import com.sun.org.apache.xpath.internal.NodeSet;However when running exactly the same code I get the following exception:
javax.xml.transform.TransformerException: java.lang.NoSuchMethodException: For extension function, could not find method
I think this could be related to EXSLT namespaces or something but am really not sure,
Any help appreciated,Hi all,
I have some code that runs fine when using some older Xalan libraries:
import org.apache.xalan.extensions.ExpressionContext;
import org.apache.xpath.NodeSet;I was trying to upgrade to use the latest libraries (from what I understand are included in the latest version of the JDK):
import com.sun.org.apache.xalan.internal.extensions.ExpressionContext;
import com.sun.org.apache.xpath.internal.NodeSet;However when running exactly the same code I get the following exception:
javax.xml.transform.TransformerException: java.lang.NoSuchMethodException: For extension function, could not find method
I think this could be related to EXSLT namespaces or something but am really not sure,
Any help appreciated, -
I was wondering if there is any plan to make the oracle XSLT processor supporting the valuable EXSL extensions
http://www.exslt.org/Oracle XDK 10g does have nice support for calling Java extension functions,
for example, see this article:
http://www.devx.com/Java/Article/31675/0/page/1
The problem is that it's not portable, which might be acceptable as well,
but Oracle XDK makes it impossible to craft portable functions
as described here:
http://www.exslt.org/howto.html#function-portability
For example, if you try this:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exslt-math="http://exslt.org/math"
xmlns:ora-math="http://www.oracle.com/XSL/Transform/java/java.lang.Math"
extension-element-prefixes="ora-math exslt-math"
exclude-result-prefixes="xsl ora-math exslt-math">
<xsl:import href="....exslt/functions/sqrt/math.sqrt.template.xsl" />
<xsl:template name="magnitude">
<xsl:param name="u"/>
<xsl:param name="v"/>
<xsl:choose>
<xsl:when test="function-available('exslt-math:sqrt')">
<xsl:value-of select="exslt-math:sqrt( ($u*$u) + ($v*$v) )" />
</xsl:when>
<xsl:when test="function-available('ora-math:sqrt')">
<xsl:value-of select="ora-math:sqrt( ($u*$u) + ($v*$v) )" />
</xsl:when>
<xsl:otherwise>
<xsl:call-template name="exslt-math:sqrt">
<xsl:with-param name="number" select="($u*$u) + ($v*$v)" />
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
The Oracle XSLT engine complains:
XML-22016: (Error) Extension function namespace should start with
'http://www.oracle.com/XSL/Transform/java/'.
This paranoid attitude means that the EXSLT stuff cannot even be in an Oracle stylesheet, even if it is never invoked. A more open minded live-n-let-live approach woud allow some approximation to portability.
Mik
P.S. The standard EXSLT library has a bug for this example,
you have to change a line in math.sqrt.template.xsl from
<xsl:call-template name="sqrt">
to
<xsl:call-template name="math:sqrt"> -
Support of exslt in OSB/ALSB
Hi,
Does OSB/ALSb support extended xslt functions i.e exslt(http://exslt.org/functions)?
When I tried to import/save an xslt having exslt functions, it gives an error
An error occurred compiling the XSLT template: javax.xml.transform.TransformerException: weblogic.apache.xml.utils.WrappedRuntimeException: Could not find variable with the name of val.
and the function is defined in xsl as :
<func:function name="ctvf:convertToNumber">
<xsl:param name="val"/>
<xsl:variable name="strVal" select="string($val)"/>
<xsl:choose>
<xsl:when test="$strVal = 'NaN'">
<func:result select="''"/>
</xsl:when>
<xsl:otherwise>
<func:result select="$strVal"/>
</xsl:otherwise>
</xsl:choose>
</func:function>
where namespaces in the header are as:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:func="http://exslt.org/functions"
Thanks,
RajeshHi all!
Thanx for the answers! I have tried in the past the /text() I tried it again and didn´t worked, some body knows how can I post some screen shots so you can see that I´m using the /text() and maybe with the screen shot you can detect something, also I´m loging the $body in the default branch(cause it is not detecting the value between the tags it goes directly to the Defaul Branch) you will se some differences in the XML since I simplified the XML to make the example and tested this simplified XML it in the TEST Tool in the console and had the same results that with the original evendough I put the /text() at the end
Here is the Body I loged in the default Branch:
<soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<imp:iniciarCambio xmlns:imp="http://bea.com/albpm/MMME/ImpactarCambiosClienteBILLING">
<cambios xmlns:bea="http://bea.com/">
<bea:ListaDeCambios>
<!--1 or more repetitions:-->
<bea:Cambio>
<bea:campoNombre>Cambio1</bea:campoNombre>
<bea:valorAnterior>antes</bea:valorAnterior>
<bea:valorNuevo>despues</bea:valorNuevo>
</bea:Cambio>
</bea:ListaDeCambios>
<bea:companiaId>32</bea:companiaId>
<bea:companiaNombre>MMRedes</bea:companiaNombre>
<bea:companiaTipo>Servicio</bea:companiaTipo>
</cambios>
</imp:iniciarCambio>
</soapenv:Body>>
as you can see it is Servicio and it should have gone to one of the branches instead of the default but it didn´t
Can´t see what I´m doing wrong, but maybe some of you can.
Thanx in advanced!
Gerardo J -
Does SOA Suite support exslt?
I am trying to extract the "day of the year" from a sysdate. I cannot find this function in SOA Suite/JDeveloper. I found an extension http://exslt.org/dates-and-times that provides more date functionality.
Has anybody tried using this extension?
Regards,
RobertHi Robert,
add the exslt template into your appliation (/bpel) folder.
and import/add the namespace of the 'day in year' function/template into your xslt.
now add the function 'day of the year' at the location you require.
please, find the xslt code here
*<xsl:stylesheet version="1.0"*
xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ora="http://schemas.oracle.com/xpath/extension"
xmlns:ehdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.headers.ESBHeaderFunctions"
xmlns:ns1="http://xmlns.oracle.com/TestBRMSyncTimout"
xmlns:ns0="http://www.w3.org/2001/XMLSchema"
xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
xmlns:date="http://exslt.org/dates-and-times"
exclude-result-prefixes="xsl ns1 ns0 xref xp20 bpws ora ehdr orcl ids hwf">
*<xsl:import href="date.difference.template.xsl"/>*
*<xsl:template match="/">*
*<ns1:ProcessResponse>*
*<ns1:result>*
*<xsl:call-template name="date:difference">*
*<xsl:with-param name="start" select="/ns1:ProcessRequest/ns1:startDate" />*
*<xsl:with-param name="end" select="/ns1:ProcessRequest/ns1:endDate" />*
*</xsl:call-template>*
*</ns1:result>*
*<ns1:result1>*
*<xsl:value-of select="xp20:format-dateTime(/ns1:ProcessRequest/ns1:startDate,'[MM]/[DD]/[YYYY]')"/>*
*</ns1:result1>*
*</ns1:ProcessResponse>*
*</xsl:template>*
*</xsl:stylesheet>*
Hope you got it.
regards,
anvv sharma
Edited by: anvv sharma on Nov 10, 2009 7:10 PM -
Trouble adding regular oracle oci8 support to RPM, CentOs 5
Hello,
It seems that i'm missing smth simple while trying to add oci8 support to RPM.
I took Christopher Jones's SRPM for 5.2.3 as a base, but since i don't have and don't need a support for instant client i modified latest available 5.1.6 SRPM from CentOS 5 repo.
The compile env is :
HOSTNAME=server.home
SHELL=/bin/bash
TERM=vt100
HISTSIZE=1000
OLDPWD=/root
USER=root
LD_LIBRARY_PATH=/u01/app/oracle/product/10.2.0/db_1/lib
LS_COLORS=no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=01;32:*.cmd=01;32:*.exe=01;32:*.com=01;32:*.btm=01;32:*.bat=01;32:*.sh=01;32:*.csh=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tz=01;31:*.rpm=01;31:*.cpio=01;31:*.jpg=01;35:*.gif=01;35:*.bmp=01;35:*.xbm=01;35:*.xpm=01;35:*.png=01;35:*.tif=01;35:
TNS_ADMIN=/u01/app/oracle/product/10.2.0/db_1/network/admin
MAIL=/var/spool/mail/root
PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
INPUTRC=/etc/inputrc
PWD=/usr/src/redhat/SPECS
LANG=en_US.UTF-8
SHLVL=1
HOME=/root
LOGNAME=root
LESSOPEN=|/usr/bin/lesspipe.sh %s
ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
G_BROKEN_FILENAMES=1
_=/bin/envi compile as a root. Here is my spec file.
%define contentdir /var/www
%define apiver 20041225
%define zendver 20050922
%define pdover 20060409
# AZ
# Version of Instant Client RPM. [email protected] May 2007
%define ociver 10.2.0.3
# For testing OCI8 and PDO_OCI. Use the password of the SYSTEM schema
# and the connection string for the target
# database. [email protected] May 2007
%define oci8_test_system_password tiger
%define oci8_test_connection_string localhost/lhome
# Set oci8_test_local_db to TRUE when the Oracle DB is on the machine
# building the RPMS. Otherwise set it to FALSE.
# [email protected] May 2007
%define oci8_test_local_db TRUE
#AZ
Summary: The PHP HTML-embedded scripting language. (PHP: Hypertext Preprocessor)
Name: php
Version: 5.1.6
Release: 15%{?dist}
License: The PHP License v3.01
Group: Development/Languages
URL: http://www.php.net/
Source0: http://www.php.net/distributions/php-%{version}.tar.gz
Source50: php.conf
Source51: php.ini
Patch1: php-5.1.4-gnusrc.patch
Patch2: php-5.1.4-warnings.patch
Patch5: php-4.3.3-install.patch
Patch6: php-5.0.4-norpath.patch
Patch7: php-4.3.2-libtool15.patch
Patch13: php-5.0.2-phpize64.patch
Patch14: php-5.1.6-ecalloc.patch
# Fixes for extension modules
Patch21: php-4.3.1-odbc.patch
Patch22: php-4.3.11-shutdown.patch
# Functional changes
Patch30: php-5.0.4-dlopen.patch
Patch31: php-5.0.0-easter.patch
# Fixes for tests
Patch50: php-5.0.4-tests-dashn.patch
Patch51: php-5.0.4-tests-wddx.patch
# Security fixes
Patch70: php-4.3.9-CVE-2006-5465.patch
Patch71: php-5.1.6-CVE-2007-0906-imap.patch
Patch72: php-4.3.9-CVE-2007-0906-strreplace.patch
Patch73: php-4.3.9-CVE-2007-0907.patch
Patch74: php-4.3.9-CVE-2007-0908.patch
Patch75: php-4.3.9-CVE-2007-0909-odbc.patch
Patch76: php-4.3.9-CVE-2007-0909-printf.patch
Patch77: php-5.1.6-CVE-2007-0910.patch
Patch78: php-4.3.9-CVE-2007-0988.patch
Patch79: php-5.1.6-CVE-2007-1285.patch
Patch80: php-5.1.6-CVE-2007-1583.patch
Patch81: php-5.1.6-CVE-2007-0455.patch
Patch82: php-5.1.6-CVE-2007-1001.patch
Patch83: php-5.1.6-CVE-2007-1718.patch
Patch84: php-5.1.6-CVE-2007-1864.patch
Patch85: php-5.1.6-soapredir.patch
Patch86: php-5.1.6-ftpcrlf.patch
Patch87: php-5.1.6-CVE-2007-2872.patch
Patch88: php-5.1.6-CVE-2007-4658.patch
Patch89: php-5.1.6-CVE-2007-2756.patch
Patch90: php-5.1.6-CVE-2007-3799.patch
Patch91: php-5.1.6-CVE-2007-3996.patch
Patch92: php-5.1.6-CVE-2007-4670.patch
Patch93: php-5.1.6-CVE-2007-3998.patch
BuildRoot: %{_tmppath}/%{name}-root
BuildRequires: bzip2-devel, curl-devel >= 7.9, db4-devel, expat-devel
BuildRequires: gmp-devel, aspell-devel >= 0.50.0
BuildRequires: httpd-devel >= 2.0.46-1, libjpeg-devel, libpng-devel, pam-devel
BuildRequires: libstdc++-devel, openssl-devel, sqlite-devel >= 3.0.0
BuildRequires: zlib-devel, pcre-devel >= 4.5, smtpdaemon
BuildRequires: bzip2, fileutils, file >= 4.0, perl, libtool >= 1.4.3, gcc-c++
Obsoletes: php-dbg, php3, phpfi, stronghold-php
# Enforce Apache module ABI compatibility
Requires: httpd-mmn = %(cat %{_includedir}/httpd/.mmn || echo missing-httpd-devel)
Requires: file >= 4.0
Provides: mod_php = %{version}-%{release}
Requires: php-common = %{version}-%{release}
# For backwards-compatibility, require php-cli for the time being:
Requires: php-cli = %{version}-%{release}
%description
PHP is an HTML-embedded scripting language. PHP attempts to make it
easy for developers to write dynamically generated webpages. PHP also
offers built-in database integration for several commercial and
non-commercial database management systems, so writing a
database-enabled webpage with PHP is fairly simple. The most common
use of PHP coding is probably as a replacement for CGI scripts.
The php package contains the module which adds support for the PHP
language to Apache HTTP Server.
%package cli
Group: Development/Languages
Summary: Command-line interface for PHP
Requires: php-common = %{version}-%{release}
Provides: php-cgi = %{version}-%{release}
Provides: php-pcntl
%description cli
The php-cli package contains the command-line interface
executing PHP scripts, /usr/bin/php, and the CGI interface.
%package common
Group: Development/Languages
Summary: Common files for PHP
Provides: php-api = %{apiver}, php-zend-abi = %{zendver}
# Provides for all builtin modules:
Provides: php-bz2, php-calendar, php-ctype, php-curl, php-date, php-exif
Provides: php-ftp, php-gettext, php-gmp, php-hash, php-iconv, php-libxml
Provides: php-mime_magic, php-openssl, php-pcre, php-posix, php-pspell
Provides: php-reflection, php-session, php-shmop, php-simplexml, php-sockets
Provides: php-spl, php-sysvsem, php-sysvshm, php-sysvmsg, php-tokenizer
Provides: php-wddx, php-zlib
#AZ
Provides: php-oci
#AZ
Obsoletes: php-openssl
%description common
The php-common package contains files used by both the php
package and the php-cli package.
%package devel
Group: Development/Libraries
Summary: Files needed for building PHP extensions.
Requires: php = %{version}-%{release}, autoconf, automake
Obsoletes: php-pecl-pdo-devel
%description devel
The php-devel package contains the files needed for building PHP
extensions. If you need to compile your own PHP extensions, you will
need to install this package.
%package imap
Summary: A module for PHP applications that use IMAP.
Group: Development/Languages
Requires: php-common = %{version}-%{release}
Obsoletes: mod_php3-imap, stronghold-php-imap
BuildRequires: krb5-devel, openssl-devel, libc-client-devel
%description imap
The php-imap package contains a dynamic shared object (DSO) for the
Apache Web server. When compiled into Apache, the php-imap module will
add IMAP (Internet Message Access Protocol) support to PHP. IMAP is a
protocol for retrieving and uploading e-mail messages on mail
servers. PHP is an HTML-embedded scripting language. If you need IMAP
support for PHP applications, you will need to install this package
and the php package.
%package ldap
Summary: A module for PHP applications that use LDAP.
Group: Development/Languages
Requires: php-common = %{version}-%{release}
Obsoletes: mod_php3-ldap, stronghold-php-ldap
BuildRequires: cyrus-sasl-devel, openldap-devel, openssl-devel
%description ldap
The php-ldap package is a dynamic shared object (DSO) for the Apache
Web server that adds Lightweight Directory Access Protocol (LDAP)
support to PHP. LDAP is a set of protocols for accessing directory
services over the Internet. PHP is an HTML-embedded scripting
language. If you need LDAP support for PHP applications, you will
need to install this package in addition to the php package.
%package pdo
Summary: A database access abstraction module for PHP applications
Group: Development/Languages
Requires: php-common = %{version}-%{release}
Obsoletes: php-pecl-pdo-sqlite, php-pecl-pdo
Provides: php-pdo-abi = %{pdover}
%description pdo
The php-pdo package contains a dynamic shared object that will add
a database access abstraction layer to PHP. This module provides
a common interface for accessing MySQL, PostgreSQL or other
databases.
%package mysql
Summary: A module for PHP applications that use MySQL databases.
Group: Development/Languages
Requires: php-common = %{version}-%{release}, php-pdo
Provides: php_database, php-mysqli
Obsoletes: mod_php3-mysql, stronghold-php-mysql
BuildRequires: mysql-devel >= 4.1.0
%description mysql
The php-mysql package contains a dynamic shared object that will add
MySQL database support to PHP. MySQL is an object-relational database
management system. PHP is an HTML-embeddable scripting language. If
you need MySQL support for PHP applications, you will need to install
this package and the php package.
%package pgsql
Summary: A PostgreSQL database module for PHP.
Group: Development/Languages
Requires: php-common = %{version}-%{release}, php-pdo
Provides: php_database
Obsoletes: mod_php3-pgsql, stronghold-php-pgsql
BuildRequires: krb5-devel, openssl-devel, postgresql-devel
%description pgsql
The php-pgsql package includes a dynamic shared object (DSO) that can
be compiled in to the Apache Web server to add PostgreSQL database
support to PHP. PostgreSQL is an object-relational database management
system that supports almost all SQL constructs. PHP is an
HTML-embedded scripting language. If you need back-end support for
PostgreSQL, you should install this package in addition to the main
php package.
#AZ
# Added oci8. [email protected] May 2007
%package oci8
Summary: A module for PHP applications using the Oracle database
Group: Development/Languages
Requires: php-common = %{version}-%{release}, php-pdo
#BuildRequires: oracle-instantclient-devel = %{ociver}
Provides: php_database, php-oci
AutoReqProv: No
%description oci8
The php-oci8 package contains a dynamic shared object (DSO) for the
Apache Web server. When compiled into Apache, the php-oci8 module will
add OCI8 support to PHP. OCI8 is an extension for Oracle Database
access. PHP is an HTML-embedded scripting language. If you need
Oracle support for PHP applications, you can install this package and
the php package.
This package also contains PDO_OCI for use with the PDO extension.
#AZ
%package odbc
Group: Development/Languages
Requires: php-common = %{version}-%{release}, php-pdo
Summary: A module for PHP applications that use ODBC databases.
Provides: php_database
Obsoletes: stronghold-php-odbc
BuildRequires: unixODBC-devel
%description odbc
The php-odbc package contains a dynamic shared object that will add
database support through ODBC to PHP. ODBC is an open specification
which provides a consistent API for developers to use for accessing
data sources (which are often, but not always, databases). PHP is an
HTML-embeddable scripting language. If you need ODBC support for PHP
applications, you will need to install this package and the php
package.
%package soap
Group: Development/Languages
Requires: php-common = %{version}-%{release}
Summary: A module for PHP applications that use the SOAP protocol
BuildRequires: libxml2-devel
%description soap
The php-soap package contains a dynamic shared object that will add
support to PHP for using the SOAP web services protocol.
%package snmp
Summary: A module for PHP applications that query SNMP-managed devices.
Group: Development/Languages
Requires: php-common = %{version}-%{release}, net-snmp
BuildRequires: net-snmp-devel
%description snmp
The php-snmp package contains a dynamic shared object that will add
support for querying SNMP devices to PHP. PHP is an HTML-embeddable
scripting language. If you need SNMP support for PHP applications, you
will need to install this package and the php package.
%package xml
Summary: A module for PHP applications which use XML
Group: Development/Languages
Requires: php-common = %{version}-%{release}
Obsoletes: php-domxml, php-dom
Provides: php-dom, php-xsl, php-domxml
BuildRequires: libxslt-devel >= 1.0.18-1, libxml2-devel >= 2.4.14-1
%description xml
The php-xml package contains dynamic shared objects which add support
to PHP for manipulating XML documents using the DOM tree,
and performing XSL transformations on XML documents.
%package xmlrpc
Summary: A module for PHP applications which use the XML-RPC protocol
Group: Development/Languages
Requires: php-common = %{version}-%{release}
BuildRequires: expat-devel
%description xmlrpc
The php-xmlrpc package contains a dynamic shared object that will add
support for the XML-RPC protocol to PHP.
%package mbstring
Summary: A module for PHP applications which need multi-byte string handling
Group: Development/Languages
Requires: php-common = %{version}-%{release}
%description mbstring
The php-mbstring package contains a dynamic shared object that will add
support for multi-byte string handling to PHP.
%package ncurses
Summary: A module for PHP applications for using ncurses interfaces
Group: Development/Languages
Requires: php-common = %{version}-%{release}
BuildRequires: ncurses-devel
%description ncurses
The php-ncurses package contains a dynamic shared object that will add
support for using the ncurses terminal output interfaces.
%package gd
Summary: A module for PHP applications for using the gd graphics library
Group: Development/Languages
Requires: php-common = %{version}-%{release}
BuildRequires: gd-devel, freetype-devel
%description gd
The php-gd package contains a dynamic shared object that will add
support for using the gd graphics library to PHP.
%package bcmath
Summary: A module for PHP applications for using the bcmath library
Group: Development/Languages
Requires: php-common = %{version}-%{release}
%description bcmath
The php-bcmath package contains a dynamic shared object that will add
support for using the bcmath library to PHP.
%package dba
Summary: A database abstraction layer module for PHP applications
Group: Development/Languages
Requires: php-common = %{version}-%{release}
%description dba
The php-dba package contains a dynamic shared object that will add
support for using the DBA database abstraction layer to PHP.
%prep
%setup -q
%patch1 -p1 -b .gnusrc
%patch2 -p1 -b .warnings
%patch5 -p1 -b .install
%patch6 -p1 -b .norpath
%patch7 -p1 -b .libtool15
%patch13 -p1 -b .phpize64
%patch14 -p1 -b .ecalloc
%patch21 -p1 -b .odbc
%patch22 -p1 -b .shutdown
%patch30 -p1 -b .dlopen
%patch31 -p1 -b .easter
%patch50 -p1 -b .tests-dashn
%patch51 -p1 -b .tests-wddx
%patch70 -p1 -b .cve5465
%patch71 -p1 -b .cve0906-imap
%patch72 -p1 -b .cve0906-strreplace
%patch73 -p1 -b .cve0907
%patch74 -p1 -b .cve0908
%patch75 -p1 -b .cve0909-odbc
%patch76 -p1 -b .cve0909-printf
%patch77 -p1 -b .cve0910
%patch78 -p1 -b .cve0988
%patch79 -p1 -b .cve1285
%patch80 -p1 -b .cve1583
%patch81 -p1 -b .cve0455
%patch82 -p1 -b .cve1001
%patch83 -p1 -b .cve1718
%patch84 -p1 -b .cve1864
%patch85 -p1 -b .soapredir
%patch86 -p1 -b .ftpcrlf
%patch87 -p1 -b .cve2872
%patch88 -p1 -b .cve4658
%patch89 -p1 -b .cve2756
%patch90 -p1 -b .cve3799
%patch91 -p1 -b .cve3996
%patch92 -p1 -b .cve4670
%patch93 -p1 -b .cve3998
# Prevent %%doc confusion over LICENSE files
cp Zend/LICENSE Zend/ZEND_LICENSE
cp TSRM/LICENSE TSRM_LICENSE
cp regex/COPYRIGHT regex_COPYRIGHT
cp ext/gd/libgd/README gd_README
# Source is built twice: once for /usr/bin/php, once for the Apache DSO.
mkdir build-cgi build-apache
# Remove bogus test; position of read position after fopen(, "a+")
# is not defined by C standard, so don't presume anything.
rm -f ext/standard/tests/file/bug21131.phpt
# Tests that fail.
rm -f ext/standard/tests/file/bug22414.phpt \
ext/iconv/tests/bug16069.phpt
#AZ
# Tests that fail.
rm -f ext/oci8/tests/bug27303.phpt \
ext/oci8/tests/bug27303_2.phpt \
ext/oci8/tests/bug27303_4.phpt
# OCI8 config file. [email protected] May 2007
cat <<EOF > ext/oci8/tests/details.inc
<?php
* Please, change user, password and dbase to match your configuration.
\$user = "scott";
\$password = "%{oci8_test_system_password}";
\$dbase = "%{oci8_test_connection_string}";
/* Set this variable to TRUE if Oracle is installed @ localhost */
\$oracle_on_localhost = %{oci8_test_local_db};
?>
EOF
#AZ
# Safety check for API version change.
vapi=`sed -n '/#define PHP_API_VERSION/{s/.* //;p}' main/php.h`
if test "x${vapi}" != "x%{apiver}"; then
: Error: Upstream API version is now ${vapi}, expecting %{apiver}.
: Update the apiver macro and rebuild.
exit 1
fi
# Safety check for Zend API version change.
vzend=`sed -n '/#define ZEND_MODULE_API_NO/{s/^[^0-9]*//;p;}' Zend/zend_modules.h`
if test "x${vzend}" != "x%{zendver}"; then
: Error: Upstream Zend module ABI version is now ${vzend}, expecting %{zendver}.
: Update the zendver macro and rebuild.
exit 1
fi
# Safety check for PDO ABI version change
vpdo=`sed -n '/#define PDO_DRIVER_API/{s/.*[ ]//;p}' ext/pdo/php_pdo_driver.h`
if test "x${vpdo}" != "x%{pdover}"; then
: Error: Upstream PDO ABI version is now ${vpdo}, expecting %{pdover}.
: Update the pdover macro and rebuild.
exit 1
fi
%build
# Force use of system libtool:
libtoolize force copy
cat `aclocal --print-ac-dir`/libtool.m4 > build/libtool.m4
# Regenerate configure scripts (patches change config.m4's)
./buildconf --force
CFLAGS="$RPM_OPT_FLAGS -fno-strict-aliasing -Wno-pointer-sign"
CPPFLAGS="-DLDAP_DEPRECATED=1"
export CFLAGS CPPFLAGS
# Install extension modules in %{_libdir}/php/modules.
EXTENSION_DIR=%{_libdir}/php/modules; export EXTENSION_DIR
# Set PEAR_INSTALLDIR to ensure that the hard-coded include_path
# includes the PEAR directory even though pear is packaged
# separately.
PEAR_INSTALLDIR=%{_datadir}/pear; export PEAR_INSTALLDIR
# Shell function to configure and build a PHP tree.
build() {
# bison-1.875-2 seems to produce a broken parser; workaround.
mkdir Zend && cp ../Zend/zend_{language,ini}_{parser,scanner}.[ch] Zend
ln -sf ../configure
%configure \
--cache-file=../config.cache \
--with-libdir=%{_lib} \
--with-config-file-path=%{_sysconfdir} \
--with-config-file-scan-dir=%{_sysconfdir}/php.d \
--disable-debug \
--with-pic \
--disable-rpath \
--without-pear \
--with-bz2 \
--with-curl \
--with-exec-dir=%{_bindir} \
--with-freetype-dir=%{_prefix} \
--with-png-dir=%{_prefix} \
--enable-gd-native-ttf \
--without-gdbm \
--with-gettext \
--with-gmp \
--with-iconv \
--with-jpeg-dir=%{_prefix} \
--with-openssl \
--with-png \
--with-pspell \
--with-expat-dir=%{_prefix} \
--with-pcre-regex=%{_prefix} \
--with-zlib \
--with-layout=GNU \
--enable-exif \
--enable-ftp \
--enable-magic-quotes \
--enable-sockets \
enable-sysvsem enable-sysvshm --enable-sysvmsg \
--enable-track-vars \
--enable-trans-sid \
--enable-yp \
--enable-wddx \
--with-kerberos \
--enable-ucd-snmp-hack \
--with-unixODBC=shared,%{_prefix} \
--enable-memory-limit \
--enable-shmop \
--enable-calendar \
--enable-dbx \
--enable-dio \
--with-mime-magic=%{_sysconfdir}/httpd/conf/magic \
--without-sqlite \
--with-libxml-dir=%{_prefix} \
--with-oci8=$ORACLE_HOME \
--with-apxs2=/usr/sbin/apxs \
--with-xml \
$*
if test $? != 0; then
tail -500 config.log
: configure failed
exit 1
fi
make %{?_smp_mflags}
# Build /usr/bin/php-cgi with the CGI SAPI, and all the shared extensions
pushd build-cgi
build --enable-force-cgi-redirect \
--enable-pcntl \
with-imap=shared with-imap-ssl \
enable-mbstring=shared enable-mbstr-enc-trans \
--enable-mbregex \
--with-ncurses=shared \
--with-gd=shared \
--enable-bcmath=shared \
enable-dba=shared with-db4=%{_prefix} \
--with-xmlrpc=shared \
--with-ldap=shared \
--with-mysql=shared,%{_prefix} \
--with-mysqli=shared,%{_bindir}/mysql_config \
--enable-dom=shared \
--with-dom-xslt=%{_prefix} --with-dom-exslt=%{_prefix} \
--with-pgsql=shared \
--with-snmp=shared,%{_prefix} \
--enable-soap=shared \
--with-xsl=shared,%{_prefix} \
enable-xmlreader=shared enable-xmlwriter=shared \
--enable-fastcgi \
--enable-pdo=shared \
--with-pdo-odbc=shared,unixODBC,%{_prefix} \
--with-pdo-mysql=shared,%{_prefix} \
--with-pdo-pgsql=shared,%{_prefix} \
--with-pdo-sqlite=shared,%{_prefix} \
# --with-pdo-oci=shared,$ORACLE_HOME \
--with-oci8 \
--enable-sigchild
popd
# Build Apache module, and the CLI SAPI, /usr/bin/php
pushd build-apache
build --with-apxs2=%{_sbindir}/apxs \
without-mysql without-gd \
without-odbc disable-dom \
disable-dba without-unixODBC \
disable-pdo disable-xmlreader --disable-xmlwriter
popd
%check
cd build-apache
# Run tests, using the CLI SAPI
export NO_INTERACTION=1 REPORT_EXIT_STATUS=1 MALLOC_CHECK_=2
unset TZ LANG LC_ALL
#AZ
# Allows PDO_OCI tests to connect. [email protected] May 2007
#export PDO_OCI_TEST_DSN=oci:dbname=%{oci8_test_connection_string}
#export PDO_OCI_TEST_USER=scott
#export PDO_OCI_TEST_PASS=%{oci8_test_system_password}
#AZ
if ! make test; then
set +x
for f in `find .. -name \*.diff -type f -print`; do
echo "TEST FAILURE: $f --"
cat "$f"
echo "-- $f result ends."
done
set -x
#exit 1
fi
unset NO_INTERACTION REPORT_EXIT_STATUS MALLOC_CHECK_
%install
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
# Install everything from the CGI SAPI build
pushd build-cgi
make install INSTALL_ROOT=$RPM_BUILD_ROOT
mv $RPM_BUILD_ROOT%{_bindir}/php $RPM_BUILD_ROOT%{_bindir}/php-cgi
# Install the CLI SAPI as /usr/bin/php
make install-cli INSTALL_ROOT=$RPM_BUILD_ROOT
popd
# Install the Apache module
pushd build-apache
make install-sapi INSTALL_ROOT=$RPM_BUILD_ROOT
popd
# Install the default configuration file and icons
install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/
install -m 644 $RPM_SOURCE_DIR/php.ini $RPM_BUILD_ROOT%{_sysconfdir}/php.ini
install -m 755 -d $RPM_BUILD_ROOT%{contentdir}/icons
install -m 644 *.gif $RPM_BUILD_ROOT%{contentdir}/icons/
# For PEAR packaging:
install -m 755 -d $RPM_BUILD_ROOT%{_libdir}/php/pear
# Use correct libdir
sed -i -e 's|%{_prefix}/lib|%{_libdir}|' $RPM_BUILD_ROOT%{_sysconfdir}/php.ini
# install the DSO
install -m 755 -d $RPM_BUILD_ROOT%{_libdir}/httpd/modules
install -m 755 build-apache/libs/libphp5.so $RPM_BUILD_ROOT%{_libdir}/httpd/modules
# Apache config fragment
install -m 755 -d $RPM_BUILD_ROOT/etc/httpd/conf.d
install -m 644 $RPM_SOURCE_DIR/php.conf $RPM_BUILD_ROOT/etc/httpd/conf.d
install -m 755 -d $RPM_BUILD_ROOT%{_sysconfdir}/php.d
install -m 755 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php
install -m 700 -d $RPM_BUILD_ROOT%{_localstatedir}/lib/php/session
# Generate files lists and stub .ini files for each subpackage
#AZ
for mod in oci8 pgsql mysql mysqli odbc ldap snmp xmlrpc imap \
mbstring ncurses gd dom xsl soap bcmath dba xmlreader xmlwriter \
pdo pdo_mysql pdo_pgsql pdo_odbc pdo_sqlite; do
#AZ
cat > $RPM_BUILD_ROOT%{_sysconfdir}/php.d/${mod}.ini <<EOF
; Enable ${mod} extension module
extension=${mod}.so
EOF
cat > files.${mod} <<EOF
%attr(755,root,root) %{_libdir}/php/modules/${mod}.so
%config(noreplace) %attr(644,root,root) %{_sysconfdir}/php.d/${mod}.ini
EOF
done
# The dom, xsl and xml* modules are all packaged in php-xml
cat files.dom files.xsl files.xml{reader,writer} > files.xml
# The mysql and mysqli modules are both packaged in php-mysql
cat files.mysqli >> files.mysql
# Split out the PDO modules
#AZ
cat files.pdo_oci >> files.oci8
#AZ
cat files.pdo_mysql >> files.mysql
cat files.pdo_pgsql >> files.pgsql
cat files.pdo_odbc >> files.odbc
# Package pdo_sqlite with pdo; isolating the sqlite dependency
# isn't useful at this time since rpm itself requires sqlite.
cat files.pdo_sqlite >> files.pdo
# Remove unpackaged files
rm -rf $RPM_BUILD_ROOT%{_libdir}/php/modules/*.a \
$RPM_BUILD_ROOT%{_bindir}/{phptar} \
$RPM_BUILD_ROOT%{_datadir}/pear
# Remove irrelevant docs
rm -f README.{Zeus,QNX,CVS-RULES}
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT
rm files.*
%files
%defattr(-,root,root)
%{_libdir}/httpd/modules/libphp5.so
%attr(0770,root,apache) %dir %{_localstatedir}/lib/php/session
%config %{_sysconfdir}/httpd/conf.d/php.conf
%{contentdir}/icons/php.gif
%files common
%defattr(-,root,root)
%doc CODING_STANDARDS CREDITS EXTENSIONS INSTALL LICENSE NEWS README*
%doc Zend/ZEND_* gd_README TSRM_LICENSE regex_COPYRIGHT
%config %{_sysconfdir}/php.ini
%dir %{_sysconfdir}/php.d
%dir %{_libdir}/php
%dir %{_libdir}/php/modules
%dir %{_localstatedir}/lib/php
%dir %{_libdir}/php/pear
%files cli
%defattr(-,root,root)
%{_bindir}/php
%{_bindir}/php-cgi
%{_mandir}/man1/php.1*
%files devel
%defattr(-,root,root)
%{_bindir}/php-config
%{_bindir}/phpize
%{_includedir}/php
%{_libdir}/php/build
%{_mandir}/man1/php-config.1*
%{_mandir}/man1/phpize.1*
%files pgsql -f files.pgsql
%files mysql -f files.mysql
%files odbc -f files.odbc
%files imap -f files.imap
%files ldap -f files.ldap
%files snmp -f files.snmp
%files xml -f files.xml
%files xmlrpc -f files.xmlrpc
%files mbstring -f files.mbstring
%files ncurses -f files.ncurses
%files gd -f files.gd
%files soap -f files.soap
%files bcmath -f files.bcmath
%files dba -f files.dba
%files pdo -f files.pdo
#AZ
%files oci8 -f files.oci8
#AZ
%changelog
* Wed Sep 12 2007 Joe Orton <[email protected]> 5.1.6-15.el5
- improve fix for CVE-2007-3997 (#278411)
* Fri Sep 7 2007 Joe Orton <[email protected]> 5.1.6-14.el5
- fix backport for CVE-2007-3996 (#278411)
* Thu Sep 6 2007 Joe Orton <[email protected]> 5.1.6-13.el5
- add security fixes for CVE-2007-2756, CVE-2007-2872,
CVE-2007-3799, CVE-2007-3996, CVE-2007-3998, CVE-2007-4658,
CVE-2007-4670 (#278411)
* Wed Apr 4 2007 Joe Orton <[email protected]> 5.1.6-12.el5
- add security fix for CVE-2007-1864, SOAP redirect handling issue,
FTP CRLF injection issue (#235016)
* Wed Apr 4 2007 Joe Orton <[email protected]> 5.1.6-11.el5
- add security fix for CVE-2007-1718 (#235016)
* Tue Apr 3 2007 Joe Orton <[email protected]> 5.1.6-9.el5
- add security fix for CVE-2007-1583 (#235016)
- add security fixes for CVE-2007-0455, CVE-2007-1001 (#235036)
* Fri Mar 9 2007 Joe Orton <[email protected]> 5.1.6-7.el5
- add security fix for CVE-2007-1285 (#231597)
* Fri Feb 16 2007 Joe Orton <[email protected]> 5.1.6-6.el5
- add security fixes for: CVE-2007-0906, CVE-2007-0907,
CVE-2007-0908, CVE-2007-0909, CVE-2007-0910, CVE-2007-0988 (#229013)
* Tue Dec 19 2006 Joe Orton <[email protected]> 5.1.6-5.el5
- fix version for php-zend-abi (#218758)
* Thu Nov 23 2006 Joe Orton <[email protected]> 5.1.6-4.el5
- php-xml provides php-domxml (#215656)
- fix php-pdo-abi provide (#214281)
- provide php-zend-abi (#212804)
- don't Obsolete mod_php
- fix PDO sqlite TEXT extraction truncate-by-one (#217033)
- package php{ize,-config} man pages in -devel (#199382)
- change module subpackages to require php-common not php (#177821)
- add security fix for CVE-2006-5465 (#216114)
* Wed Oct 4 2006 Joe Orton <[email protected]> 5.1.6-3
- from upstream: add safety checks against integer overflow in _ecalloc
* Tue Aug 29 2006 Joe Orton <[email protected]> 5.1.6-2
- update to 5.1.6 (security fixes)
- bump default memory_limit to 16M (#196802)
* Wed Jul 12 2006 Jesse Keating <[email protected]> - 5.1.4-8.1
- rebuild
* Fri Jun 9 2006 Joe Orton <[email protected]> 5.1.4-8
- Provide php-posix (#194583)
- only provide php-pcntl from -cli subpackage
- add missing defattr's (thanks to Matthias Saou)
* Fri Jun 9 2006 Joe Orton <[email protected]> 5.1.4-7
- move Obsoletes for php-openssl to -common (#194501)
- Provide: php-cgi from -cli subpackage
* Fri Jun 2 2006 Joe Orton <[email protected]> 5.1.4-6
- split out php-cli, php-common subpackages (#177821)
- add php-pdo-abi version export (#193202)
* Wed May 24 2006 Radek Vokal <[email protected]> 5.1.4-5.1
- rebuilt for new libnetsnmp
* Thu May 18 2006 Joe Orton <[email protected]> 5.1.4-5
- provide mod_php (#187891)
- provide php-cli (#192196)
- use correct LDAP fix (#181518)
- define GNUSOURCE in php_config.h and leave it defined
- drop (circular) dependency on php-pear
* Mon May 8 2006 Joe Orton <[email protected]> 5.1.4-3
- update to 5.1.4
* Wed May 3 2006 Joe Orton <[email protected]> 5.1.3-3
- update to 5.1.3
* Tue Feb 28 2006 Joe Orton <[email protected]> 5.1.2-5
- provide php-api (#183227)
- add provides for all builtin modules (Tim Jackson, #173804)
- own %%{_libdir}/php/pear for PEAR packages (per #176733)
- add obsoletes to allow upgrade from FE4 PDO packages (#181863)
* Fri Feb 10 2006 Jesse Keating <[email protected]> - 5.1.2-4.3
- bump again for double-long bug on ppc(64)
* Tue Feb 07 2006 Jesse Keating <[email protected]> - 5.1.2-4.1
- rebuilt for new gcc4.1 snapshot and glibc changes
* Tue Jan 31 2006 Joe Orton <[email protected]> 5.1.2-4
- rebuild for new libc-client soname
* Mon Jan 16 2006 Joe Orton <[email protected]> 5.1.2-3
- only build xmlreader and xmlwriter shared (#177810)
* Fri Jan 13 2006 Joe Orton <[email protected]> 5.1.2-2
- update to 5.1.2
* Thu Jan 5 2006 Joe Orton <[email protected]> 5.1.1-8
- rebuild again
* Mon Jan 2 2006 Joe Orton <[email protected]> 5.1.1-7
- rebuild for new net-snmp
* Mon Dec 12 2005 Joe Orton <[email protected]> 5.1.1-6
- enable short_open_tag in default php.ini again (#175381)
* Fri Dec 09 2005 Jesse Keating <[email protected]>
- rebuilt
* Thu Dec 8 2005 Joe Orton <[email protected]> 5.1.1-5
- require net-snmp for php-snmp (#174800)
* Sun Dec 4 2005 Joe Orton <[email protected]> 5.1.1-4
- add /usr/share/pear back to hard-coded include_path (#174885)
* Fri Dec 2 2005 Joe Orton <[email protected]> 5.1.1-3
- rebuild for httpd 2.2
* Mon Nov 28 2005 Joe Orton <[email protected]> 5.1.1-2
- update to 5.1.1
- remove pear subpackage
- enable pdo extensions (php-pdo subpackage)
- remove non-standard conditional module builds
- enable xmlreader extension
* Thu Nov 10 2005 Tomas Mraz <[email protected]> 5.0.5-6
- rebuilt against new openssl
* Mon Nov 7 2005 Joe Orton <[email protected]> 5.0.5-5
- pear: update to XML_RPC 1.4.4, XML_Parser 1.2.7, Mail 1.1.9 (#172528)
* Tue Nov 1 2005 Joe Orton <[email protected]> 5.0.5-4
- rebuild for new libnetsnmp
* Wed Sep 14 2005 Joe Orton <[email protected]> 5.0.5-3
- update to 5.0.5
- add fix for upstream #34435
- devel: require autoconf, automake (#159283)
- pear: update to HTTP-1.3.6, Mail-1.1.8, Net_SMTP-1.2.7, XML_RPC-1.4.1
- fix imagettftext et al (upstream, #161001)
* Thu Jun 16 2005 Joe Orton <[email protected]> 5.0.4-11
- ldap: restore ldap_start_tls() function
* Fri May 6 2005 Joe Orton <[email protected]> 5.0.4-10
- disable RPATHs in shared extensions (#156974)
* Tue May 3 2005 Joe Orton <[email protected]> 5.0.4-9
- build simplexml_import_dom even with shared dom (#156434)
- prevent truncation of copied files to ~2Mb (#155916)
- install /usr/bin/php from CLI build alongside CGI
- enable sysvmsg extension (#142988)
* Mon Apr 25 2005 Joe Orton <[email protected]> 5.0.4-8
- prevent build of builtin dba as well as shared extension
* Wed Apr 13 2005 Joe Orton <[email protected]> 5.0.4-7
- split out dba and bcmath extensions into subpackages
- BuildRequire gcc-c++ to avoid AC_PROG_CXX{,CPP} failure (#155221)
- pear: update to DB-1.7.6
- enable FastCGI support in /usr/bin/php-cgi (#149596)
* Wed Apr 13 2005 Joe Orton <[email protected]> 5.0.4-6
- build /usr/bin/php with the CLI SAPI, and add /usr/bin/php-cgi,
built with the CGI SAPI (thanks to Edward Rudd, #137704)
- add php(1) man page for CLI
- fix more test cases to use -n when invoking php
* Wed Apr 13 2005 Joe Orton <[email protected]> 5.0.4-5
- rebuild for new libpq soname
* Tue Apr 12 2005 Joe Orton <[email protected]> 5.0.4-4
- bundle from PEAR: HTTP, Mail, XML_Parser, Net_Socket, Net_SMTP
- snmp: disable MSHUTDOWN function to prevent error_log noise (#153988)
- mysqli: add fix for crash on x86_64 (Georg Richter, upstream #32282)
* Mon Apr 11 2005 Joe Orton <[email protected]> 5.0.4-3
- build shared objects as PIC (#154195)
* Mon Apr 4 2005 Joe Orton <[email protected]> 5.0.4-2
- fix PEAR installation and bundle PEAR DB-1.7.5 package
* Fri Apr 1 2005 Joe Orton <[email protected]> 5.0.4-1
- update to 5.0.4 (#153068)
- add .phps AddType to php.conf (#152973)
- better gcc4 fix for libxmlrpc
* Wed Mar 30 2005 Joe Orton <[email protected]> 5.0.3-5
- BuildRequire mysql-devel >= 4.1
- don't mark php.ini as noreplace to make upgrades work (#152171)
- fix subpackage descriptions (#152628)
- fix memset(,,0) in Zend (thanks to Dave Jones)
- fix various compiler warnings in Zend
* Thu Mar 24 2005 Joe Orton <[email protected]> 5.0.3-4
- package mysqli extension in php-mysql
- really enable pcntl (#142903)
- don't build with --enable-safe-mode (#148969)
- use "Instant Client" libraries for oci8 module (Kai Bolay, #149873)
* Fri Feb 18 2005 Joe Orton <[email protected]> 5.0.3-3
- fix build with GCC 4
* Wed Feb 9 2005 Joe Orton <[email protected]> 5.0.3-2
- install the ext/gd headers (#145891)
- enable pcntl extension in /usr/bin/php (#142903)
- add libmbfl array arithmetic fix ([email protected], #143795)
- add BuildRequire for recent pcre-devel (#147448)
* Wed Jan 12 2005 Joe Orton <[email protected]> 5.0.3-1
- update to 5.0.3 (thanks to Robert Scheck et al, #143101)
- enable xsl extension (#142174)
- package both the xsl and dom extensions in php-xml
- enable soap extension, shared (php-soap package) (#142901)
- add patches from upstream 5.0 branch:
* Zend_strtod.c compile fixes
* correct php_sprintf return value usage
* Mon Nov 22 2004 Joe Orton <[email protected]> 5.0.2-8
- update for db4-4.3 (Robert Scheck, #140167)
- build against mysql-devel
- run tests in %%check
* Wed Nov 10 2004 Joe Orton <[email protected]> 5.0.2-7
- truncate changelog at 4.3.1-1
- merge from 4.3.x package:
- enable mime_magic extension and Require: file (#130276)
* Mon Nov 8 2004 Joe Orton <[email protected]> 5.0.2-6
- fix dom/sqlite enable/without confusion
* Mon Nov 8 2004 Joe Orton <[email protected]> 5.0.2-5
- fix phpize installation for lib64 platforms
- add fix for segfault in variable parsing introduced in 5.0.2
* Mon Nov 8 2004 Joe Orton <[email protected]> 5.0.2-4
- update to 5.0.2 (#127980)
- build against mysqlclient10-devel
- use new RTLD_DEEPBIND to load extension modules
- drop explicit requirement for elfutils-devel
- use AddHandler in default conf.d/php.conf (#135664)
- "fix" round() fudging for recent gcc on x86
- disable sqlite pending audit of warnings and subpackage split
* Fri Sep 17 2004 Joe Orton <[email protected]> 5.0.1-4
- don't build dom extension into 2.0 SAPI
* Fri Sep 17 2004 Joe Orton <[email protected]> 5.0.1-3
- ExclusiveArch: x86 ppc x86_64 for the moment
* Fri Sep 17 2004 Joe Orton <[email protected]> 5.0.1-2
- fix default extension_dir and conf.d/php.conf
* Thu Sep 9 2004 Joe Orton <[email protected]> 5.0.1-1
- update to 5.0.1
- only build shared modules once
- put dom extension in php-dom subpackage again
- move extension modules into %%{_libdir}/php/modules
- don't use --with-regex=system, it's ignored for the apache* SAPIs
* Wed Aug 11 2004 Tom Callaway <[email protected]>
- Merge in some spec file changes from Jeff Stern ([email protected])
* Mon Aug 09 2004 Tom Callaway <[email protected]>
- bump to 5.0.0
- add patch to prevent clobbering struct re_registers from regex.h
- remove domxml references, replaced with dom now built-in
- fix php.ini to refer to php5 not php4
* Wed Aug 04 2004 Florian La Roche <[email protected]>
- rebuild
* Wed Jul 14 2004 Joe Orton <[email protected]> 4.3.8-3
- update to 4.3.8
- catch some fd > FD_SETSIZE vs select() issues (#125258)
* Mon Jun 21 2004 Joe Orton <[email protected]> 4.3.7-4
- pick up test failures again
- have -devel require php of same release
* Thu Jun 17 2004 Joe Orton <[email protected]> 4.3.7-3
- add gmp_powm fix (Oskari Saarenmaa, #124318)
- split mbstring, ncurses, gd, openssl extns into subpackages
- fix memory leak in apache2handler; use ap_r{write,flush}
rather than brigade interfaces
* Tue Jun 15 2004 Elliot Lee <[email protected]>
- rebuilt
* Thu Jun 3 2004 Joe Orton <[email protected]> 4.3.7-1
- update to 4.3.7
- have -pear subpackage require php of same VR
* Wed May 26 2004 Joe Orton <[email protected]> 4.3.6-6
- buildrequire smtpdaemon (#124430)
- try switching to system libgd again (prevent symbol conflicts
when e.g. mod_perl loads the system libgd library.)
* Wed May 19 2004 Joe Orton <[email protected]> 4.3.6-5
- don't obsolete php-imap (#123580)
- unconditionally build -imap subpackage
* Thu May 13 2004 Joe Orton <[email protected]> 4.3.6-4
- remove trigger
* Thu Apr 22 2004 Joe Orton <[email protected]> 4.3.6-3
- fix umask reset "feature" (#121454)
- don't use DL_GLOBAL when dlopen'ing extension modules
* Sun Apr 18 2004 Joe Orton <[email protected]> 4.3.6-2
- fix segfault on httpd SIGHUP (upstream #27810)
* Fri Apr 16 2004 Joe Orton <[email protected]> 4.3.6-1
- update to 4.3.6 (Robert Scheck, #121011)
* Wed Apr 7 2004 Joe Orton <[email protected]> 4.3.4-11
- add back imap subpackage, using libc-client (#115535)
* Tue Mar 02 2004 Elliot Lee <[email protected]>
- rebuilt
* Wed Feb 18 2004 Joe Orton <[email protected]> 4.3.4-10
- eliminate /usr/local/lib RPATH in odbc.so
- really use system pcre library
* Fri Feb 13 2004 Elliot Lee <[email protected]> 4.3.4-9
- rebuilt
* Mon Feb 2 2004 Bill Nottingham <[email protected]> 4.3.4-8
- obsolete php-imap if we're not building it
* Wed Jan 28 2004 Joe Orton <[email protected]> 4.3.4-7
- gd fix for build with recent Freetype2 (from upstream)
- remove easter egg (Oden Eriksson, Mandrake)
* Wed Jan 21 2004 Joe Orton <[email protected]> 4.3.4-6
- php-pear requires php
- also remove extension=imap from php.ini in upgrade trigger
- merge from Taroon: allow upgrade from Stronghold 4.0
* Wed Jan 21 2004 Joe Orton <[email protected]> 4.3.4-5
- add defattr for php-pear subpackage
- restore defaults: output_buffering=Off, register_argc_argv=On
- add trigger to handle php.ini upgrades smoothly (#112470)
* Tue Jan 13 2004 Joe Orton <[email protected]> 4.3.4-4
- conditionalize support for imap extension for the time being
- switch /etc/php.ini to use php.ini-recommended (but leave
variables_order as EGPCS) (#97765)
- set session.path to /var/lib/php/session by default (#89975)
- own /var/lib/php{,/session} and have apache own the latter
- split off php-pear subpackage (#83771)
* Sat Dec 13 2003 Jeff Johnson <[email protected]> 4.3.4-3
- rebuild against db-4.2.52.
* Mon Dec 1 2003 Joe Orton <[email protected]> 4.3.4-2
- rebuild for new libxslt (#110658)
- use --with-{mssql,oci8} for enabling extensions (#110482)
- fix rebuild issues (Jan Visser, #110274)
- remove hard-coded LIBS
- conditional support for mhash (Aleksander Adamowski, #111251)
* Mon Nov 10 2003 Joe Orton <[email protected]> 4.3.4-1.1
- rebuild for FC1 updates
* Mon Nov 10 2003 Joe Orton <[email protected]> 4.3.4-1
- update to 4.3.4
- include all licence files
- libxmlrpc fixes
* Mon Oct 20 2003 Joe Orton <[email protected]> 4.3.3-6
- use bundled libgd (#107407)
- remove manual: up-to-date manual sources are no longer DFSG-free;
it's too big; it's on the web anyway; #91292, #105804, #107384
* Wed Oct 15 2003 Joe Orton <[email protected]> 4.3.3-5
- add php-xmlrpc subpackage (#107138)
* Mon Oct 13 2003 Joe Orton <[email protected]> 4.3.3-4
- drop recode support, symbols collide with MySQL
* Sun Oct 12 2003 Joe Orton <[email protected]> 4.3.3-3
- split domxml extension into php-domxml subpackage
- enable xslt and xml support in domxml extension (#106042)
- fix httpd-devel build requirement (#104341)
- enable recode extension (#106755)
- add workaround for #103982
* Thu Sep 25 2003 Jeff Johnson <[email protected]> 4.3.3-3
- rebuild against db-4.2.42.
* Sun Sep 7 2003 Joe Orton <[email protected]> 4.3.3-2
- don't use --enable-versioning, it depends on libtool being
broken (#103690)
* Sun Sep 7 2003 Joe Orton <[email protected]> 4.3.3-1
- update to 4.3.3
- add libtool build prereq (#103388)
- switch to apache2handler
* Mon Jul 28 2003 Joe Orton <[email protected]> 4.3.2-8
- rebuild
* Tue Jul 22 2003 Nalin Dahyabhai <[email protected]> 4.3.2-7
- rebuild
* Tue Jul 8 2003 Joe Orton <[email protected]> 4.3.2-6
- use system pcre library
* Mon Jun 9 2003 Joe Orton <[email protected]> 4.3.2-5
- enable mbstring and mbregex (#81336)
- fix use of libtool 1.5
* Wed Jun 04 2003 Elliot Lee <[email protected]>
- rebuilt
* Tue Jun 3 2003 Joe Orton <[email protected]> 4.3.2-3
- add lib64 and domxml fixes
* Tue Jun 3 2003 Frank Dauer <[email protected]>
- added conditional support for mssql module (#92149)
* Fri May 30 2003 Joe Orton <[email protected]> 4.3.2-2
- update the -tests and -lib64 patches
- fixes for db4 detection
- require aspell-devel >= 0.50.0 for pspell compatibility
* Thu May 29 2003 Joe Orton <[email protected]> 4.3.2-1
- update to 4.3.2
* Fri May 16 2003 Joe Orton <[email protected]> 4.3.1-3
- link odbc module correctly
- patch so that php -n doesn't scan inidir
- run tests using php -n, avoid loading system modules
* Wed May 14 2003 Joe Orton <[email protected]> 4.3.1-2
- workaround broken parser produced by bison-1.875
* Tue May 6 2003 Joe Orton <[email protected]> 4.3.1-1
- update to 4.3.1; run test suite
- open extension modules with RTLD_NOW rather than _LAZYThe error is :
Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).
+ with-oci8 enable-sigchild
/var/tmp/rpm-tmp.3167: line 156: --with-oci8: command not found
error: Bad exit status from /var/tmp/rpm-tmp.3167 (%build)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.3167 (%build)If i modify spec like this :
# Build /usr/bin/php-cgi with the CGI SAPI, and all the shared extensions
pushd build-cgi
build --enable-force-cgi-redirect \
--enable-pcntl \
with-imap=shared with-imap-ssl \
enable-mbstring=shared enable-mbstr-enc-trans \
--enable-mbregex \
--with-ncurses=shared \
--with-gd=shared \
--enable-bcmath=shared \
enable-dba=shared with-db4=%{_prefix} \
--with-xmlrpc=shared \
--with-ldap=shared \
--with-mysql=shared,%{_prefix} \
--with-mysqli=shared,%{_bindir}/mysql_config \
--enable-dom=shared \
--with-dom-xslt=%{_prefix} --with-dom-exslt=%{_prefix} \
--with-pgsql=shared \
--with-snmp=shared,%{_prefix} \
--enable-soap=shared \
--with-xsl=shared,%{_prefix} \
enable-xmlreader=shared enable-xmlwriter=shared \
--enable-fastcgi \
--enable-pdo=shared \
--with-pdo-odbc=shared,unixODBC,%{_prefix} \
--with-pdo-mysql=shared,%{_prefix} \
--with-pdo-pgsql=shared,%{_prefix} \
--with-pdo-sqlite=shared,%{_prefix} \
# --with-pdo-oci=shared,$ORACLE_HOME \
--with-oci8=shared,$ORACLE_HOME/lib \
--enable-sigchild
popdI'm getting :
Build complete.
(It is safe to ignore warnings about tempnam and tmpnam).
+ with-oci8=shared,/u01/app/oracle/product/10.2.0/db_1/lib enable-sigchild
/var/tmp/rpm-tmp.11885: line 156: --with-oci8=shared,/u01/app/oracle/product/10.2.0/db_1/lib: No such file or directory
error: Bad exit status from /var/tmp/rpm-tmp.11885 (%build)
Please help.and a bit further :
diff:
12,13c12,13
< %define oci8_test_system_password tiger
< %define oci8_test_connection_string localhost/lhome
%define oci8_test_system_password oracle
%define oci8_test_connection_string localhost/orcl2136,138c136,137
< Requires: php-common = %{version}-%{release}, php-pdo
< # oracle-instantclient-basic = %{ociver} php-pdo
< #BuildRequires: oracle-instantclient-devel = %{ociver}
Requires: php-common = %{version}-%{release}, oracle-instantclient-basic = %{ociver} php-pdo
BuildRequires: oracle-instantclient-devel = %{ociver}339c338
< \$user = "scott";
\$user = "system";487c486,487
< with-oci8 enable-sigchild
--with-pdo-oci=shared,instantclient,/usr,%{ociver} \
--with-oci8=shared,instantclient,/usr/lib/oracle/%{ociver}/client/lib --enable-sigchild496c496
< disable-pdo disable-xmlreader --disable-xmlwriter
disable-pdo disable-xmlreader --disable-xmlwriter506,508c506,508
< #export PDO_OCI_TEST_DSN=oci:dbname=%{oci8_test_connection_string}
< #export PDO_OCI_TEST_USER=system
< #export PDO_OCI_TEST_PASS=%{oci8_test_system_password}
export PDO_OCI_TEST_DSN=oci:dbname=%{oci8_test_connection_string}
export PDO_OCI_TEST_USER=system
export PDO_OCI_TEST_PASS=%{oci8_test_system_password}571c571
< pdo pdo_mysql pdo_pgsql pdo_odbc pdo_sqlite; do
pdo pdo_mysql pdo_pgsql pdo_odbc pdo_sqlite pdo_oci; do589c589
< #cat files.pdo_oci >> files.oci8
cat files.pdo_oci >> files.oci8rpmbuild -bi
+ '[' /var/tmp/php-root '!=' / ']'
+ rm -f /var/tmp/php-root/etc/httpd/conf/httpd.conf /var/tmp/php-root/etc/httpd/conf/httpd.conf.bak
+ /usr/lib/rpm/brp-compress
+ /usr/lib/rpm/brp-strip
+ /usr/lib/rpm/brp-strip-static-archive
+ /usr/lib/rpm/brp-strip-comment-note
Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.40673
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd php-5.2.3
+ cd build-apache
+ export NO_INTERACTION=1 REPORT_EXIT_STATUS=1 MALLOC_CHECK_=2
+ NO_INTERACTION=1
+ REPORT_EXIT_STATUS=1
+ MALLOC_CHECK_=2
+ unset TZ LANG LC_ALL
+ make test
Build complete.
Don't forget to run 'make test'.
PHP Warning: PHP Startup: gd: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
PHP Warning: PHP Startup: ldap: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
PHP Warning: PHP Startup: gd: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
in Unknown on line 0
PHP Warning: PHP Startup: ldap: Unable to initialize module
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP compiled with module API=20060613, debug=0, thread-safety=0etc. etc... -
Hi-
I'm trying to use the latest Xercies/Xalan classes in OC4J 10.1.3 as described in the How-To swap XML Parsers document:
http://www.oracle.com/technology/tech/java/oc4j/1013/how_to/how-to-swapxmlparser/doc/readme.html
What I can see happening is that the oracle.xml shared library is successfully 'turned off', but the xalan libraries are not added. Instead, the default xml classes that are distributed with the JDK become visible. For instance, using a slightly modified version of the index.jsp page from the how-to, I get this result:
------ Output from JSP page ----------------
TransformerFactory Instance: org.apache.xalan.processor.TransformerFactoryImpl
Transformer Instance: org.apache.xalan.transformer.TransformerIdentityImpl
Transformer Version: Xalan Java 2.4.1 (!!)
What I expect is for that last line to say version 2.7.0, which is the version of the xalan.jar included in my shared library (code to add that line to the how-to shown below).
I suspect what is happening is that the class loader is simply not letting a shared library override a system library - to do that you probably need to place the jar files in system endorsed directory.
Has anyone gotten this how-to to work - actually replacing the XML parser/transform classes with the latest Xalan classes? Are you sure it is seeing the current version you placed in the shared library?
Thanks,
Eric Everman
---- My modified getXSLTDetails() method in the index.jsp page of the how-to -------
<!-- Additional Import -->
<%@ page import="org.apache.xalan.Version" %>
public static String getXSLTDetails()
Transformer transformer=null;
TransformerFactory transformerfactory = TransformerFactory.newInstance();
Version ver = null;
String br = "<" + "br" + ">"; //otherwise the otn forum chocks on the break.
try
transformer = transformerfactory.newTransformer();
ver = (Version) transformer.getClass().forName("org.apache.xalan.Version").newInstance();
String ret_val =
"TransformerFactory Instance: "+transformerfactory.getClass().getName() + br +
"Transformer Instance: "+transformer.getClass().getName() + br;
if (ver != null) {
ret_val = ret_val + "Transformer Version: " + ver.getVersion() + br;
} else {
ret_val = ret_val + "Transformer Version not Available" + br;
return ret_val;
catch (Exception e)
e.printStackTrace();
return e.getMessage();
}--------------------------------------------------------------------Steve - Thanks for responding on this.
The Xalan SQL extension is built into Xalan. The most painless way to try it out is to run it via JEdit: www.jedit.org
JEdit a OS Java application with a fairly painless install process (I'm assuming you already have a current JRE installed). Once its installed, you'll need to install the XSLT plugin - in JEdit goto Plugins | Plugin Manager | Install and pick the XSLT plugin. You'll need the Oracle JDBC classes on your classpath - this can be done by copying the oracle_jdbc4.jar into the [JEdit install directory]/jars directory.
Restart to load that jar and you should be all set.
I included a sample XSLT page at the bottom of this post that is somewhat of a template transform for the SQL extension - its more complicated then it needs to be, but it does some nice things with the results of the query. Save it as a file and make the appropriate changes to the 'datasource' parameter near the top of the file.
Then in JEdit, open the file and make sure the XSLT plugin is visible (Plugins | XSLT | XSLT Processor Toggle - or alternately dock it in the window via global prefs). In the XSLT plugin: Allow the current buffer to be used as the source, Add that same file as a stylesheet via the '+' button, and pick a result file at the bottom. Then click the 'Transform XML' button.
Troubleshooting: I seem to remember having some classpath errors when I tried this on windows, but others have had it work w/o issues. I do remeber that the XSLT plugin had a popup window that gave a pretty good explaintion of the problem, if it occurs. Also, for some reason the XSLT plugin will not create a new file for the output, so its often best to create a file first, then choose it as the output. Of course, you can always run a transformation from the command line or w/in an applicatoin. Full docs on the Xalan SQL extension can be found at: http://xml.apache.org/xalan-j/extensionslib.html#sql
Here is my sample XSLT transform using the SQL extension:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:sql="http://xml.apache.org/xalan/sql"
xmlns:str="http://exslt.org/strings"
xmlns:xalan="http://xml.apache.org/xalan"
extension-element-prefixes="sql str xalan">
<xsl:output indent="yes"/>
<xsl:param name="driver">oracle.jdbc.OracleDriver</xsl:param>
<xsl:param name="datasource">jdbc:oracle:thin:jqpublic/jqpublic@server_name:1521:dbname</xsl:param>
<xsl:param name="jndiDatasource"><!-- jndi source for production use w/in enterprise environment --></xsl:param>
<xsl:param name="debug">true</xsl:param>
<xsl:variable name="connection" select="sql:new()"/>
<xsl:variable name="uppercase" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:variable name="lowercase" select="'abcdefghijklmnopqrstuvwxyz'"/>
<!--
The query: You could pass parameters in to this query to build a where clause, but here is a simple example.
Also, its nice to wrap the query with a max row number to prevent huge results.
-->
<xsl:param name="query">
select * from (
SELECT
'One' FIELD_1,
'Two' FIELD_2
FROM DUAL
) where rownum < 100
</xsl:param>
<!-- Essentially, create a XConnection object -->
<xsl:variable name="connection" select="sql:new()"/>
<xsl:template match="/">
<xsl:choose><!-- Connect using JNDI -->
<xsl:when test="$jndiDatasource != ''">
<xsl:if test="not(sql:connect($connection, $jndiDatasource))">
<xsl:message>Failed to connect to db via jndi connection</xsl:message>
<xsl:comment>Failed to connect to db via jndi connection</xsl:comment>
<xsl:if test="$debug = 'true'">
<xsl:copy-of select="sql:getError($connection)/ext-error"/>
</xsl:if>
</xsl:if>
</xsl:when>
<xsl:otherwise><!-- Connect using connection string -->
<xsl:if test="not(sql:connect($connection, $driver, $datasource))">
<xsl:message>Failed to connect to db via driver/url connection</xsl:message>
<xsl:comment>Failed to connect to db via driver/url connection</xsl:comment>
<xsl:if test="$debug = 'true'">
<xsl:copy-of select="sql:getError($connection)/ext-error"/>
</xsl:if>
</xsl:if>
</xsl:otherwise>
</xsl:choose>
<!--
The results of the query. The rowset is brought back in 'streaming' mode,
so its not possible to ask it for the number of rows, or to check for zero
rows. There is a switch to disable streaming mode, but this requires all
rows to be brought into memory.
-->
<xsl:variable name="table" select="sql:query($connection, $query)"/>
<xsl:if test="not($table)">
<xsl:message>Error in Query</xsl:message>
<xsl:copy-of select="sql:getError($connection)/ext-error"/>
</xsl:if>
<page>
<!-- Your xalan environment -->
<xsl:copy-of select="xalan:checkEnvironment()"/>
<!-- Build a bunch of metadata about the rows -->
<meta>
<cols>
<xsl:apply-templates select="$table/sql/metadata/column-header"/>
</cols>
</meta>
<rowset>
<!--
With streaming results, you must use the apply-temmplates contruct,
not for-each, since for-each seems to attempt to count the rows, which
returns zero.
-->
<xsl:apply-templates select="$table/sql/row-set"/>
</rowset>
</page>
<xsl:value-of select="sql:close($connection)"/><!-- Always close -->
</xsl:template>
<xsl:template match="row">
<row>
<xsl:apply-templates select="col"/>
</row>
</xsl:template>
<xsl:template match="column-header">
<col>
<xsl:attribute name="type">
<xsl:value-of select="@column-typename"/>
</xsl:attribute>
<xsl:attribute name="display-name">
<xsl:call-template name="create-display-name"/>
</xsl:attribute>
<xsl:value-of select="@column-name"/>
</col>
</xsl:template>
<!-- Convert column names to proper caps: MY_FIELD becomes My Field -->
<xsl:template name="create-display-name">
<xsl:variable name="col-name">
<xsl:for-each select="str:tokenize(@column-name, '_')">
<xsl:value-of
select="concat(translate(substring(., 1, 1), $lowercase, $uppercase), translate(substring(.,2), $uppercase, $lowercase), ' ')"/>
</xsl:for-each>
</xsl:variable>
<xsl:value-of select="substring($col-name, 1, string-length($col-name) - 1)"/>
</xsl:template>
<!-- Creates data columns named 'col' with a column-name attribute -->
<xsl:template match="col">
<col>
<xsl:attribute name="column-name"><xsl:value-of select="@column-name"/></xsl:attribute>
<xsl:value-of select="."/>
</col>
</xsl:template>
</xsl:stylesheet> -
Hi,
I've tried to get the current date in my xslt mapping.
I've used the following xslt coding:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date">
<xsl:template match="/">
<xsl:variable name="now" select="current-date()"/>
</xsl:template>
</xsl:stylesheet>
In stylus studio everything is OK and i retrieve the current date.
When i import the xslt in the mapping tool and test the mapping i get the following error:
javax.xml.transform.TransformerException: com.sap.engine.lib.xml.util.NestedException: Function with name 'current-date' not found in context library. at com.sap.engine.lib.jaxp.TransformerImpl.transform(TransformerImpl.java:251)
While directly using the current date functionality within the message mapping everything is OK too.
Does anyone know which date-functionality is used within the message mapping within the Integration Builder and/or wich mapping to be used in xslt for a working scenario?
Thnx in advance!Ok thnx, these anwers where very helpfull for me to solve this problem.
I've awarded points for all your answers.
For anyone interested later on, I needed the date in my XSLT mapping in the following format ddMMMyy.
Finnally I used the following xslt to achieve this:
<xsl:template name="currentDate" xmlns:cal="java:java.util.GregorianCalendar">
<xsl:variable name="now" select="cal:getInstance()" />
<xsl:variable name="day" select="cal:get($now, 5)" />
<xsl:variable name="month" select="cal:get($now, 2) + 1" />
<xsl:variable name="year" select="substring(string(cal:get($now, 1)), 3, 2)" />
<xsl:variable name="month">
<xsl:choose>
<xsl:when test="$month=1">Jan</xsl:when>
<xsl:when test="$month=2">Feb</xsl:when>
<xsl:when test="$month=3">Mar</xsl:when>
<xsl:when test="$month=4">Apr</xsl:when>
<xsl:when test="$month=5">May</xsl:when>
<xsl:when test="$month=6">Jun</xsl:when>
<xsl:when test="$month=7">Jul</xsl:when>
<xsl:when test="$month=8">Aug</xsl:when>
<xsl:when test="$month=9">Sep</xsl:when>
<xsl:when test="$month=10">Oct</xsl:when>
<xsl:when test="$month=11">Nov</xsl:when>
<xsl:when test="$month=12">Dec</xsl:when>
<xsl:otherwise>INVALID MONTH</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:choose>
<xsl:when test="$day < 10">
<xsl:value-of select="concat(concat(concat('0',$day), $month), $year)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(concat($day, $month), $year)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template> -
XSLT Enhancement with Java, Tokenize Functionality
I tried the following requirement using EXSLT with no luck. Is there any other alternative to tokenize in XSLT 1.0.
The syntax i have here is
<xsl:for-each select="tokenize($this/Field1,',')">
<xsl:variable name="f1v" select="."/>
<xsl:for-each select="tokenize($this/Field2,'\|')">
<xsl:variable name="f2v" select="."/>
<xsl:for-each select="tokenize($this/Field3,'\|')">
<xsl:variable name="f3v" select="."/>
There are multiple for-each based on tokens
I am leaning towards to Enhancing XSLT with Java Function. As i have less experience with Java, can anybody help me with the code that can be used by XSLT for Tokenize functionality.
I have written something like following. I still have errors to fix. But i am not sure about having resultSet or return at the end, to make sure all the tokens were sent to XSLT.
public class MyStringToken
public static void main(String [] args)
String str = "sssd;wwer;ssswwwwdwwwwwwwwwww;wwwwe";
String delimiter = ";";
MyStringToken my = new MyStringToken();
my.getTokens(str,delimiter);
public void getTokens(String str,String delimiter)
StringTokenizer st = new StringTokenizer(str,delimiter);
while(st.hasMoreElements())
try
String delString = new String(st.nextElement().toString());
return (delString);
catch(Exception e)
e.printStackTrace();
Any help is appreciatedHi,
I have been searching about, and I have found the next example that maybe can help you, It's a template to tokenize in XSLT 1.0 from the web [http://stackoverflow.com/questions/1018974/tokenizing-and-sorting-with-xslt-1-0]
<xsl:template name="tokenize">
<xsl:param name="string" />
<xsl:param name="delimiter" select="' '" />
<xsl:choose>
<xsl:when test="$delimiter and contains($string, $delimiter)">
<token>
<xsl:value-of select="substring-before($string, $delimiter)" />
</token>
<xsl:text> </xsl:text>
<xsl:call-template name="tokenize">
<xsl:with-param name="string"
select="substring-after($string, $delimiter)" />
<xsl:with-param name="delimiter" select="$delimiter" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<token><xsl:value-of select="$string" /></token>
<xsl:text> </xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
Also I have found the next example of use tokenize in EXSLT from [http://exslt.org/str/functions/tokenize/index.html] It can be that inI your tests you are not using "str:tokenize", no?
<xsl:template match="a">
<xsl:apply-templates />
</xsl:template>
<xsl:template match="*">
<xsl:value-of select="." />
<xsl:value-of select="str:tokenize(string(.), ' ')" />
<xsl:value-of select="str:tokenize(string(.), '')" />
<xsl:for-each select="str:tokenize(string(.), ' ')">
<xsl:value-of select="." />
</xsl:for-each>
<xsl:apply-templates select="*" />
</xsl:template>
I hope that helps you.
Best.
Jorge -
Hi ,
I want to get the current datetime during my xlst tranform. I used the below codes but can not get it .
xslt 1.0
<xsl:stylesheet ...
xmlns:ex="http://exslt.org/dates-and-times" extension-element-prefixes="ex">
<xsl:value-of select="ex:date-time()"/> ...
</xsl:stylesheet>
error i got: the function date-time() can not be found.
xlst 2.0
<xsl:value-of select="current-dateTime()"/>
error i got : the function current-dateTime() can not be found.
Does anyone know how i can solve this problem? Any example or suggestion is welcomed.
Thanks in advance.
DennisIf that piece of xslt has any chance to succeed, you have to do either one of the modification.
[1] Either you change the version attribute to 2.0. Oracle xslt processor is one of the earliest to get xslt 2.0 support at the time it is still a working draft. I think current-dateTime() xslt 2.0 function should be supported.
<xsl:stylesheet version="2.0"[2] There are quite a bit of oracle proprietary extensions there. Hence, if you understand the suggestion(s) all along, it should do the task without appealing to the other extensions which may have their own functions to get the current date-time. This is how you should do for a test, keeping the version="1.0" unchanged.
<xsl:stylesheet version="1.0"
xmlns:date="http://www.oracle.com/XSL/Transform/java/java.util.Date"
xmlns:xref="http://www.oracle.com/XSL/Transform/java/oracle.tip.xref.xpath.XRefXPathFunctions"
xmlns:xp20="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.Xpath20"
xmlns:bpws="http://schemas.xmlsoap.org/ws/2003/03/business-process/"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ora="http://schemas.oracle.com/xpath/extension"
xmlns:ehdr="http://www.oracle.com/XSL/Transform/java/oracle.tip.esb.server.headers.ESBHeaderFunctions"
xmlns:ns0="http://www.example.org"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:orcl="http://www.oracle.com/XSL/Transform/java/oracle.tip.pc.services.functions.ExtFunc"
xmlns:ids="http://xmlns.oracle.com/bpel/services/IdentityService/xpath"
xmlns:hwf="http://xmlns.oracle.com/bpel/workflow/xpath"
exclude-result-prefixes="xsl xsd ns0 xref xp20 bpws ora ehdr orcl ids hwf date ">
<xsl:template match="/">
...etc
<TimeStamp><xsl:value-of select="date:toString(date:new())"/></TimeStamp>
...etc
</xsl:template> -
Error in Current Date in XSLT Mapping
Hi Experts,
I am having a problem in Dispaying the current Date and Time ( or System Date and Time ) .As per my Project Requirements I need do XSLT mapping
My XSLT Mapping Looks like
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a="http://XYZ.eu.ABC.com">
<xsl:template match="/">
<a:A2A>
<a:PNo>
<xsl:value-of select="Path/Path/PNO"/>
</a:PNo>
<a:Rev>
<xsl:value-of select="Path/Path/REVISION"/>
</a:Rev>
<a:Current Date>
<xsl:value-of select= ""/>
</a:Current Date>
<a:Current Time>
<xsl:value-of select= ""/>
</a:Current Time>
</xsl:template>
</xsl:stylesheet>
Can any one please let me is there is any function to dispaly the Current Date and time.Hi ..
I just tried executing both the maps.. Both of them excutes well in both XMLSpy and Stylus Studio .. But having below problems in Executing in PI
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="/aaa">
<xxx>
<xsl:value-of select="current-dateTime()"/>
</xxx>
</xsl:template>
</xsl:stylesheet>
Then I got the error
javax.xml.transform.TransformerException: com.sap.engine.lib.xml.util.NestedException: Function with name 'current-dateTime' not found in context library.
with
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:datetime="http://exslt.org/dates-and-times"
exclude-result-prefixes="datetime">
<xsl:template match="/">
<currtime>
<xsl:value-of select="datetime:dateTime()" />
</currtime>
</xsl:template>
</xsl:stylesheet>
I have got
Unable to find resource http://exslt/org/dates-and-times.class (http://NAMESPACE Name) in the following software component versions: 0fe18820-410a-11dd-979b-dc8591374305 -
Hi,
I had searched on SDN already and tried few codes without success.
If somebody had already worked on current date function in XSLT mapping version 1.0, please share it.
Thanks in advance,
Venkat.
PS: links I already referred.
http://www.w3.org/TR/xpath-functions/#func-current-dateTime
Error in Current Date in XSLT Mapping
Re: XSLT Mapping - Getting current date in XSLT version 1.0
Re: Current date in xslt mappingHi,
XSLT 1.0 does not provide any standard way to get the current date/time. You can call an extension function to do it (depends on your processor), or you can pass it to the stylesheet as the value of a parameter.
current-date() and current-time(). For XSLT 1 you'll have to use the dates-and-times EXSLT extension package. Here's a usage example for XSLT 1:
<xsl:stylesheet xmlns:ex="http://exslt.org/dates-and-times" extension-element-prefixes="ex">
<xsl:value-of select="ex:date-time()"/>
</xsl:stylesheet>
Refer this for
http://www.exslt.org/date/index.html -
856 xslt Mapping question ...
I was asked in the jdev forum to post this here as well :)
Ramesh,
I hate to keep bugging everyone but i have another question.
I am trying to transform data into an X-12 856 document (outbound). I have most of the looping and everything working. My only issue is how do you handle the parent child relationships in the HL01/02 ? Since xpath does not let you increment a variable how can you keep the count of the HL loops let alone tell the HL02 (parent's HL01) We are using a SOPI scenario and the items need to be subordinate to the appopriate pack level.
I really appreciate all the time and awnsers you have given me so far :)
Thank you in advance,
JadenHi,
There is a way to handle x=x+1 in XSLT....here it is..assume u want to sum all the elements of an arraylist in an XML...create a temporary variable(TransCountSumVar) and do a foreach and group them in one more variable (Transactions_Count2)
<xsl:variable name="TransCountSumVar">
<xsl:for-each select="/ns1:TotalDate/ns1:price">
<Transactions_Count2>
<xsl:value-of select="number(ns1:price)"/>
</Transactions_Count2>
</xsl:for-each>
</xsl:variable>now get the sum of those in Transactions_Count2 as follows
<xsl:variable name="TComp" select="sum(exsl:node-set($TransCountSumVar)/Transactions_Count2)"/>where Tcomp is another variable with holds the final sum and be sure to the the namespace xmlns:exsl="http://exslt.org/common" in XSL at name space declarations. -
Imported XSLT cannot create attributes for generated XML element
I have two xslts. One imports the other.
The imported xslt creates XML elements with attributes and this XML is stored in a variable in the main stylesheet
If I perform the transformation with JRE prior to 1.6.0.18 then all works fine
If I use 1.6.0.18 or 1.6.0.19 then the attributes aren't added.
If I add attributes in the main xslt it works fine or if I output the element directly instead of first storing it in a variable then it also works fine.
Problem seems to be when you try to add attributes from an imported stylesheet and store the generated element in a variable.
Below two stylesheets to illustrate :
First MainStylesheet.xsl
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 1993-2005 Seagull Software Systems, Inc. -->
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl"
exclude-result-prefixes="xs">
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes" />
<xsl:import href="innerstylesheet.xsl"/>
<xsl:template match="/TestData">
<xsl:variable name="generatedElementXml">
<xsl:call-template name="generateElement">
<xsl:with-param name="s">testValue</xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:for-each select="exsl:node-set($generatedElementXml)">
*** GeneratedElementXML {<xsl:text>
</xsl:text><xsl:copy-of select="*"></xsl:copy-of>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>Next innerstylesheet.xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:exsl="http://exslt.org/common"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
extension-element-prefixes="exsl" >
<xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/>
<xsl:template name="generateElement">
<xsl:param name="s"/>
<TestElement testAttribute="$s" />
</xsl:template>
</xsl:stylesheet>The result output by jres before 1.6.0.18 is :
<?xml version="1.0" encoding="UTF-8"?>
*** GeneratedElementXML {
<TestElement xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" testAttribute="testValue"/>
} The result output by jres since 1.6.0.18 is :
<?xml version="1.0" encoding="UTF-8"?>
*** GeneratedElementXML {
<TestElement xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
} Note : the 'testAttribute' attribute is missingHave found the difference in the code
In both JRE1.6.0_17 & JRE1.6.0_18, the class 'com.sun.org.apache.xalan.internal.xsltc.dom.AdaptiveResultTreeImpl' has the following method
public void addUniqueAttribute(String qName, String value, int flags)
throws SAXException
addAttribute(qName, value);
}In JRE1.6.0_17 the next method is
public void addAttribute(String name, String value)
if (_openElementName != null) {
_attributes.add(name, value);
else {
BasisLibrary.runTimeError(BasisLibrary.STRAY_ATTRIBUTE_ERR, name);
}In JRE1.6.0_18 the next method is
public void addAttribute(String uri, String localName, String qname,
String type, String value)
if (_openElementName != null) {
_attributes.addAttribute(uri, localName, qname, type, value);
else {
BasisLibrary.runTimeError(BasisLibrary.STRAY_ATTRIBUTE_ERR, qname);
}Note - the addAttribute method has additional parameters in JRE1.6.0_18 but the call from addUniqueAttribute wasn't updated.
So in JRE1.6.0_18 addUniqueAttribute actually invokes the following method in the base package com.sun.org.apache.xml.internal.serializer.EmptySerializer
public void addAttribute(String name, String value)
aMethodIsCalled();
void aMethodIsCalled()
// throw new RuntimeException(err);
return;
}and as you can see this does nothing. Hence the fact that the attribute isn't added. -
Hi Community,
I need to get Current date into the Custom WPC webform. I used the following code in my XSL:
<xsl:value-of disable-output-escaping="yes" select="date:date()"/>
and the NameSpace: xmlns:date="http://exslt.org/dates-and-times"
I am getting the following error: com.sap.engine.lib.xml.util.NestedException: Could not load class: http://exslt.org/dates-and-times required for extension library. -> java.lang.ClassNotFoundException: http://exslt.org/dates-and-times
How should I go about this?
Regards,
JKHi Vishal,
Getting the following error:
An error occurred while generating a preview : com.sap.engine.lib.xml.util.NestedException: Could not load class: http://exslt.org/dates-and-times required for extension library. -> java.lang.ClassNotFoundException: http://exslt.org/dates-and-times
P.S: I tired even: http://exslt.org/Dates And Times
Regards
JK
Maybe you are looking for
-
I know this has probably been asked a million times, Im not sure if this has anything to do with whats up with my mac but i just installed the latest update and once I shut it down and rebooted it after a few days nothing happened other than it kept
-
I have a handful of PowerShell scripts that ran as Scheduled Tasks on an old Windows 2008 SP2 server, which output reports as Excel workbooks with multiple worksheets, via a COM object. After migrating these scripts to a new Windows 2012 R2 server, t
-
HELP PLEASE - WHATS WRONG WITH THIS CODE
Hi. I get this message coming up when I try to compile the code, run: java.lang.NullPointerException at sumcalculator.SumNumbers.<init>(SumNumbers.java:34) at sumcalculator.SumNumbers.main(SumNumbers.java:93) Exception in thread "main" Java Result: 1
-
How to add a border to ListView
I want to add a border to a ListView control. Using the WS_BORDER window style has worked: HWND hListView = CreateWindowEx(0, WC_LISTVIEW, "", WS_CHILD | LVS_REPORT | WS_VISIBLE | WS_BORDER, 10, 10, 320, 200, hWnd, 0, hInstance, NULL); But I am not s
-
I have an error message in dreamweaver that doesn't permit me to preview in firefox.
Unable to launch Macintosh HD:System:Library:Automator:LaunchApplication.action:Contents:Resources:no.lproj.:main.ni b. Please be sure that this application exists and that there is enough memory to run it.