b1beb92
From f05438dda954965651f332b2f7ee97dbdd951b98 Mon Sep 17 00:00:00 2001
b1beb92
From: David Tardon <dtardon@redhat.com>
b1beb92
Date: Thu, 20 Sep 2012 10:28:56 +0200
b1beb92
Subject: [PATCH 2/4] rework selection of transformer for an XSLT filter
b1beb92
b1beb92
(cherry picked from commit ca0ea73a4ab104031a16b5bac7a9bb6e57c77ba0)
b1beb92
b1beb92
Conflicts:
b1beb92
	filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
b1beb92
b1beb92
Change-Id: I765762f11813c6b612416a8db2707bf94114c876
b1beb92
---
b1beb92
 filter/source/xsltdialog/typedetectionexport.cxx   |  2 +-
b1beb92
 filter/source/xsltdialog/typedetectionimport.cxx   |  2 +-
b1beb92
 filter/source/xsltdialog/xmlfiltercommon.hxx       |  2 +-
b1beb92
 filter/source/xsltdialog/xmlfilterhelpids.hrc      |  3 +-
b1beb92
 .../source/xsltdialog/xmlfiltersettingsdialog.cxx  | 19 ++----
b1beb92
 filter/source/xsltdialog/xmlfiltertabpagexslt.cxx  | 20 ++-----
b1beb92
 filter/source/xsltdialog/xmlfiltertabpagexslt.hrc  |  5 +-
b1beb92
 filter/source/xsltdialog/xmlfiltertabpagexslt.hxx  |  5 +-
b1beb92
 filter/source/xsltdialog/xmlfiltertabpagexslt.src  | 23 +++----
b1beb92
 filter/source/xsltfilter/LibXSLTTransformer.cxx    |  4 +-
b1beb92
 filter/source/xsltfilter/LibXSLTTransformer.hxx    | 18 +++---
b1beb92
 filter/source/xsltfilter/XSLTFilter.cxx            | 70 +++++++++++++++-------
b1beb92
 .../sun/star/comp/xsltfilter/XSLTransformer.java   | 13 ++--
b1beb92
 filter/source/xsltfilter/components.rdb            |  4 +-
b1beb92
 filter/source/xsltfilter/xsltfilter.component      |  2 +-
b1beb92
 offapi/UnoApi_offapi.mk                            |  9 +++
b1beb92
 offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl  | 30 ++++++++++
b1beb92
 offapi/com/sun/star/xml/xslt/XSLTTransformer.idl   | 32 ++++++++++
b1beb92
 offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl  | 36 +++++++++++
b1beb92
 19 files changed, 204 insertions(+), 95 deletions(-)
b1beb92
 create mode 100644 offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl
b1beb92
 create mode 100644 offapi/com/sun/star/xml/xslt/XSLTTransformer.idl
b1beb92
 create mode 100644 offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl
b1beb92
b1beb92
diff --git a/filter/source/xsltdialog/typedetectionexport.cxx b/filter/source/xsltdialog/typedetectionexport.cxx
b1beb92
index a01b462..83bf7fa 100644
b1beb92
--- a/filter/source/xsltdialog/typedetectionexport.cxx
b1beb92
+++ b/filter/source/xsltdialog/typedetectionexport.cxx
b1beb92
@@ -192,7 +192,7 @@ void TypeDetectionExporter::doExport( Reference< XOutputStream > xOS,  const XML
b1beb92
                 sValue += sComma;
b1beb92
                 sValue += sXSLTFilterService;
b1beb92
                 sValue += sDelim;
b1beb92
-                sValue += pFilter->maXSLTTransformerImpl;
b1beb92
+                sValue += OUString::valueOf( pFilter->mbNeedsXSLT2 );
b1beb92
                 sValue += sDelim;
b1beb92
 
b1beb92
                 const application_info_impl* pAppInfo = getApplicationInfo( pFilter->maExportService );
b1beb92
diff --git a/filter/source/xsltdialog/typedetectionimport.cxx b/filter/source/xsltdialog/typedetectionimport.cxx
b1beb92
index 3d3b937..50428e7 100644
b1beb92
--- a/filter/source/xsltdialog/typedetectionimport.cxx
b1beb92
+++ b/filter/source/xsltdialog/typedetectionimport.cxx
b1beb92
@@ -180,7 +180,7 @@ filter_info_impl* TypeDetectionImporter::createFilterForNode( Node * pNode )
b1beb92
 
b1beb92
     OUString aAdapterService( getSubdata( 0, aDelim, aFilterUserData ) );
b1beb92
     //Import/ExportService
b1beb92
-    pFilter->maXSLTTransformerImpl = getSubdata( 1, aDelim, aFilterUserData );
b1beb92
+    pFilter->mbNeedsXSLT2 = getSubdata( 1, aDelim, aFilterUserData ).toBoolean();
b1beb92
     pFilter->maImportService = getSubdata( 2, aDelim, aFilterUserData );
b1beb92
     pFilter->maExportService = getSubdata( 3, aDelim, aFilterUserData );
b1beb92
     pFilter->maImportXSLT = getSubdata( 4, aDelim, aFilterUserData );
b1beb92
diff --git a/filter/source/xsltdialog/xmlfiltercommon.hxx b/filter/source/xsltdialog/xmlfiltercommon.hxx
b1beb92
index cdb767e..41be2c7 100644
b1beb92
--- a/filter/source/xsltdialog/xmlfiltercommon.hxx
b1beb92
+++ b/filter/source/xsltdialog/xmlfiltercommon.hxx
b1beb92
@@ -77,7 +77,7 @@ public:
b1beb92
 
b1beb92
     sal_Bool        mbReadonly;
b1beb92
 
b1beb92
-    rtl::OUString   maXSLTTransformerImpl;
b1beb92
+    sal_Bool        mbNeedsXSLT2;
b1beb92
 
b1beb92
     filter_info_impl();
b1beb92
     filter_info_impl( const filter_info_impl& rInfo );
b1beb92
diff --git a/filter/source/xsltdialog/xmlfilterhelpids.hrc b/filter/source/xsltdialog/xmlfilterhelpids.hrc
b1beb92
index 558a274..a22fa52 100644
b1beb92
--- a/filter/source/xsltdialog/xmlfilterhelpids.hrc
b1beb92
+++ b/filter/source/xsltdialog/xmlfilterhelpids.hrc
b1beb92
@@ -50,8 +50,7 @@
b1beb92
 #define HID_XML_FILTER_DOCTYPE                              "FILTER_HID_XML_FILTER_DOCTYPE"
b1beb92
 #define HID_XML_FILTER_DTD                                  "FILTER_HID_XML_FILTER_DTD"
b1beb92
 #define HID_XML_FILTER_DTD_BROWSE                           "FILTER_HID_XML_FILTER_DTD_BROWSE"
b1beb92
-#define HID_XML_FILTER_TRANSFORM_SERVICE_SAXON_J			"FILTER_HID_XML_FILTER_TRANSFORM_SERVICE_SAXON_J"
b1beb92
-#define HID_XML_FILTER_TRANSFORM_SERVICE_LIBXSLT			"FILTER_HID_XML_FILTER_TRANSFORM_SERVICE_LIBXSLT"
b1beb92
+#define HID_XML_FILTER_NEEDS_XSLT2			    "FILTER_HID_XML_FILTER_NEEDS_XSLT2"
b1beb92
 #define HID_XML_FILTER_EXPORT_XSLT                          "FILTER_HID_XML_FILTER_EXPORT_XSLT"
b1beb92
 #define HID_XML_FILTER_EXPORT_XSLT_BROWSE                   "FILTER_HID_XML_FILTER_EXPORT_XSLT_BROWSE"
b1beb92
 #define HID_XML_FILTER_IMPORT_XSLT                          "FILTER_HID_XML_FILTER_IMPORT_XSLT"
b1beb92
diff --git a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
b1beb92
index 558ac0d..a54b520 100644
b1beb92
--- a/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
b1beb92
+++ b/filter/source/xsltdialog/xmlfiltersettingsdialog.cxx
b1beb92
@@ -1164,7 +1164,7 @@ void XMLFilterSettingsDialog::initFilterList()
b1beb92
                     continue;
b1beb92
 
b1beb92
                 // get filter information from userdata
b1beb92
-                pTempFilter->maXSLTTransformerImpl = aUserData[1];
b1beb92
+                pTempFilter->mbNeedsXSLT2 = aUserData[1].toBoolean();
b1beb92
                 pTempFilter->maImportService = aUserData[2];
b1beb92
                 pTempFilter->maExportService = aUserData[3];
b1beb92
                 pTempFilter->maImportXSLT = aUserData[4];
b1beb92
@@ -1590,7 +1590,8 @@ filter_info_impl::filter_info_impl()
b1beb92
 :   maFlags(0x00080040),
b1beb92
     maFileFormatVersion(0),
b1beb92
     mnDocumentIconID(0),
b1beb92
-    mbReadonly(sal_False)
b1beb92
+    mbReadonly(sal_False),
b1beb92
+    mbNeedsXSLT2(sal_False)
b1beb92
 {
b1beb92
 }
b1beb92
 
b1beb92
@@ -1615,7 +1616,7 @@ filter_info_impl::filter_info_impl( const filter_info_impl& rInfo ) :
b1beb92
     maFileFormatVersion( rInfo.maFileFormatVersion ),
b1beb92
     mnDocumentIconID( rInfo.mnDocumentIconID ),
b1beb92
     mbReadonly( rInfo.mbReadonly ),
b1beb92
-    maXSLTTransformerImpl( rInfo.maXSLTTransformerImpl )
b1beb92
+    mbNeedsXSLT2( rInfo.mbNeedsXSLT2 )
b1beb92
 {
b1beb92
 }
b1beb92
 
b1beb92
@@ -1639,7 +1640,7 @@ int filter_info_impl::operator==( const filter_info_impl& r ) const
b1beb92
         maImportTemplate != r.maImportTemplate ||
b1beb92
         maFlags != r.maFlags ||
b1beb92
         maFileFormatVersion != r.maFileFormatVersion ||
b1beb92
-        maXSLTTransformerImpl != r.maXSLTTransformerImpl
b1beb92
+        mbNeedsXSLT2 != r.mbNeedsXSLT2
b1beb92
         )
b1beb92
         return false;
b1beb92
 
b1beb92
@@ -1653,15 +1654,7 @@ Sequence< OUString > filter_info_impl::getFilterUserData() const
b1beb92
     Sequence< OUString > aUserData(8);
b1beb92
 
b1beb92
     aUserData[0] = OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.documentconversion.XSLTFilter" ) );
b1beb92
-    /*
b1beb92
-    const application_info_impl* pInfo = getApplicationInfo( maDocumentService );
b1beb92
-    if( pInfo )
b1beb92
-    {
b1beb92
-        aUserData[2] = pInfo->maXMLImporter;
b1beb92
-        aUserData[3] = pInfo->maXMLExporter;
b1beb92
-    }
b1beb92
-    */
b1beb92
-    aUserData[1] = maXSLTTransformerImpl;
b1beb92
+    aUserData[1] = OUString::valueOf( mbNeedsXSLT2 );
b1beb92
     aUserData[2] = maImportService;
b1beb92
     aUserData[3] = maExportService;
b1beb92
     aUserData[4] = maImportXSLT;
b1beb92
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx b/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx
b1beb92
index dc1a4c8..b4cae16 100644
b1beb92
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx
b1beb92
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.cxx
b1beb92
@@ -68,9 +68,8 @@ XMLFilterTabPageXSLT::XMLFilterTabPageXSLT( Window* pParent, ResMgr& rResMgr, co
b1beb92
     maEDImportTemplate( this, ResId( ED_XML_IMPORT_TEMPLATE, rResMgr ), INET_PROT_FILE ),
b1beb92
     maPBImportTemplate( this, ResId( PB_XML_IMPORT_TEMPLATE_BROWSE, rResMgr ) ),
b1beb92
 
b1beb92
-    maFTTransformationService( this, ResId (FT_XML_TRANSFORM_SERVICE, rResMgr ) ),
b1beb92
-    maRBTransformationServiceLibXSLT( this, ResId (RB_XML_TRANSFORM_SERVICE_LIBXSLT, rResMgr ) ),
b1beb92
-    maRBTransformationServiceSaxonJ( this, ResId (RB_XML_TRANSFORM_SERVICE_SAXON_J, rResMgr ) ),
b1beb92
+    maFTNeedsXSLT2( this, ResId (FT_XML_NEEDS_XSLT2, rResMgr ) ),
b1beb92
+    maCBNeedsXSLT2( this, ResId (CB_XML_NEEDS_XSLT2, rResMgr ) ),
b1beb92
 
b1beb92
     sHTTPSchema( RTL_CONSTASCII_USTRINGPARAM( "http://" ) ),
b1beb92
     sSHTTPSchema( RTL_CONSTASCII_USTRINGPARAM( "shttp://" ) ),
b1beb92
@@ -100,8 +99,7 @@ XMLFilterTabPageXSLT::XMLFilterTabPageXSLT( Window* pParent, ResMgr& rResMgr, co
b1beb92
     maEDExportXSLT.SetHelpId( HID_XML_FILTER_EXPORT_XSLT );
b1beb92
     maEDImportXSLT.SetHelpId( HID_XML_FILTER_IMPORT_XSLT );
b1beb92
     maEDImportTemplate.SetHelpId( HID_XML_FILTER_IMPORT_TEMPLATE );
b1beb92
-    maRBTransformationServiceLibXSLT.SetHelpId( HID_XML_FILTER_TRANSFORM_SERVICE_LIBXSLT );
b1beb92
-    maRBTransformationServiceSaxonJ.SetHelpId( HID_XML_FILTER_TRANSFORM_SERVICE_SAXON_J );
b1beb92
+    maCBNeedsXSLT2.SetHelpId( HID_XML_FILTER_NEEDS_XSLT2 );
b1beb92
 }
b1beb92
 
b1beb92
 XMLFilterTabPageXSLT::~XMLFilterTabPageXSLT()
b1beb92
@@ -117,10 +115,7 @@ bool XMLFilterTabPageXSLT::FillInfo( filter_info_impl* pInfo )
b1beb92
         pInfo->maExportXSLT = GetURL( maEDExportXSLT );
b1beb92
         pInfo->maImportXSLT = GetURL( maEDImportXSLT );
b1beb92
         pInfo->maImportTemplate = GetURL( maEDImportTemplate );
b1beb92
-        pInfo->maXSLTTransformerImpl
b1beb92
-                = maRBTransformationServiceSaxonJ.IsChecked() ? OUString(
b1beb92
-                        RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.JAXTHelper" ))
b1beb92
-                        : OUString(RTL_CONSTASCII_USTRINGPARAM( "" ));
b1beb92
+        pInfo->mbNeedsXSLT2 = maCBNeedsXSLT2.IsChecked();
b1beb92
     }
b1beb92
 
b1beb92
     return true;
b1beb92
@@ -136,12 +131,7 @@ void XMLFilterTabPageXSLT::SetInfo(const filter_info_impl* pInfo)
b1beb92
         SetURL( maEDExportXSLT, pInfo->maExportXSLT );
b1beb92
         SetURL( maEDImportXSLT, pInfo->maImportXSLT );
b1beb92
         SetURL( maEDImportTemplate, pInfo->maImportTemplate );
b1beb92
-        if (pInfo->maXSLTTransformerImpl.equals(OUString(
b1beb92
-                RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.JAXTHelper" )))) {
b1beb92
-            maRBTransformationServiceSaxonJ.Check();
b1beb92
-        } else {
b1beb92
-            maRBTransformationServiceLibXSLT.Check();
b1beb92
-        }
b1beb92
+        maCBNeedsXSLT2.Check( pInfo->mbNeedsXSLT2 );
b1beb92
     }
b1beb92
 }
b1beb92
 
b1beb92
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc b/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc
b1beb92
index 12a9d46..bdd39e7 100644
b1beb92
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc
b1beb92
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.hrc
b1beb92
@@ -44,8 +44,7 @@
b1beb92
 #define FT_XML_IMPORT_TEMPLATE          12
b1beb92
 #define ED_XML_IMPORT_TEMPLATE          13
b1beb92
 #define PB_XML_IMPORT_TEMPLATE_BROWSE   14
b1beb92
-#define FT_XML_TRANSFORM_SERVICE		15
b1beb92
-#define RB_XML_TRANSFORM_SERVICE_LIBXSLT 16
b1beb92
-#define RB_XML_TRANSFORM_SERVICE_SAXON_J 17
b1beb92
+#define FT_XML_NEEDS_XSLT2		15
b1beb92
+#define CB_XML_NEEDS_XSLT2		16
b1beb92
 
b1beb92
 #endif
b1beb92
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx b/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx
b1beb92
index a9d8062..a0375b7 100644
b1beb92
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx
b1beb92
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.hxx
b1beb92
@@ -69,9 +69,8 @@ public:
b1beb92
     SvtURLBox       maEDImportTemplate;
b1beb92
     PushButton      maPBImportTemplate;
b1beb92
 
b1beb92
-    FixedText       maFTTransformationService;
b1beb92
-    RadioButton		maRBTransformationServiceLibXSLT;
b1beb92
-    RadioButton		maRBTransformationServiceSaxonJ;
b1beb92
+    FixedText       maFTNeedsXSLT2;
b1beb92
+    CheckBox	    maCBNeedsXSLT2;
b1beb92
 
b1beb92
 private:
b1beb92
     void SetURL( SvtURLBox& rURLBox, const rtl::OUString& rURL );
b1beb92
diff --git a/filter/source/xsltdialog/xmlfiltertabpagexslt.src b/filter/source/xsltdialog/xmlfiltertabpagexslt.src
b1beb92
index 2d0391c..96b83f7 100644
b1beb92
--- a/filter/source/xsltdialog/xmlfiltertabpagexslt.src
b1beb92
+++ b/filter/source/xsltdialog/xmlfiltertabpagexslt.src
b1beb92
@@ -175,27 +175,18 @@ TabPage RID_XML_FILTER_TABPAGE_XSLT
b1beb92
 
b1beb92
     // XSLT transformation service --------------------------------------------------------
b1beb92
 
b1beb92
-    FixedText FT_XML_TRANSFORM_SERVICE
b1beb92
+    CheckBox CB_XML_NEEDS_XSLT2
b1beb92
     {
b1beb92
+        HelpID = HID_XML_FILTER_NEEDS_XSLT2;
b1beb92
         Pos                 = MAP_APPFONT ( FIRST_ROW_X , FIRST_ROW_Y + 5 * ROW_HEIGHT + 5 * SPACING + FIXED_TEXT_OFFSET + EDIT_OFFSET ) ;
b1beb92
-        Size                = MAP_APPFONT ( FIRST_ROW_WIDTH , 8 ) ;
b1beb92
-        Text [ en-US ]  = "XSLT Transformation Service";
b1beb92
-    };
b1beb92
-
b1beb92
-    RadioButton RB_XML_TRANSFORM_SERVICE_LIBXSLT
b1beb92
-    {
b1beb92
-        HelpID = HID_XML_FILTER_TRANSFORM_SERVICE_LIBXSLT;
b1beb92
-        Pos                 = MAP_APPFONT ( SECOND_ROW_X , SECOND_ROW_Y + 5 * ROW_HEIGHT + 5 * SPACING + EDIT_OFFSET ) ;
b1beb92
-        Size                = MAP_APPFONT ( SECOND_ROW_WIDTH - SPACING - BROWSE_WIDTH, 12 ) ;
b1beb92
-        Text[ en-US ] = "~Builtin (LibXSLT)";
b1beb92
+        Size                = MAP_APPFONT ( 12, 12 ) ;
b1beb92
     };
b1beb92
 
b1beb92
-    RadioButton RB_XML_TRANSFORM_SERVICE_SAXON_J
b1beb92
+    FixedText FT_XML_NEEDS_XSLT2
b1beb92
     {
b1beb92
-        HelpID = HID_XML_FILTER_TRANSFORM_SERVICE_SAXON_J;
b1beb92
-        Pos                 = MAP_APPFONT ( SECOND_ROW_X , SECOND_ROW_Y + 6 * ROW_HEIGHT + 6 * SPACING + EDIT_OFFSET ) ;
b1beb92
-        Size                = MAP_APPFONT ( SECOND_ROW_WIDTH - SPACING - BROWSE_WIDTH, 12 ) ;
b1beb92
-        Text[ en-US ] = "~Saxon/J";
b1beb92
+        Pos                 = MAP_APPFONT ( FIRST_ROW_X + 3 * SPACING , SECOND_ROW_Y + 5 * ROW_HEIGHT + 5 * SPACING + FIXED_TEXT_OFFSET + EDIT_OFFSET ) ;
b1beb92
+        Size                = MAP_APPFONT ( 2 * FIRST_ROW_WIDTH , 8 ) ; // guess width
b1beb92
+        Text [ en-US ]  = "The filter needs XSLT 2.0 processor";
b1beb92
     };
b1beb92
 
b1beb92
 };
b1beb92
diff --git a/filter/source/xsltfilter/LibXSLTTransformer.cxx b/filter/source/xsltfilter/LibXSLTTransformer.cxx
b1beb92
index ff57fc1..ab03316 100644
b1beb92
--- a/filter/source/xsltfilter/LibXSLTTransformer.cxx
b1beb92
+++ b/filter/source/xsltfilter/LibXSLTTransformer.cxx
b1beb92
@@ -488,9 +488,11 @@ namespace XSLT
b1beb92
     }
b1beb92
 
b1beb92
     void
b1beb92
-    LibXSLTTransformer::initialize(const Sequence<Any>& params)
b1beb92
+    LibXSLTTransformer::initialize(const Sequence<Any>& args)
b1beb92
             throw (RuntimeException)
b1beb92
     {
b1beb92
+        Sequence<Any> params;
b1beb92
+        args[0] >>= params;
b1beb92
         xmlSubstituteEntitiesDefault(0);
b1beb92
         m_parameters.clear();
b1beb92
         for (int i = 0; i < params.getLength(); i++)
b1beb92
diff --git a/filter/source/xsltfilter/LibXSLTTransformer.hxx b/filter/source/xsltfilter/LibXSLTTransformer.hxx
b1beb92
index 444cb2f..a7c71a6 100644
b1beb92
--- a/filter/source/xsltfilter/LibXSLTTransformer.hxx
b1beb92
+++ b/filter/source/xsltfilter/LibXSLTTransformer.hxx
b1beb92
@@ -42,7 +42,7 @@
b1beb92
 
b1beb92
 #include <cppuhelper/factory.hxx>
b1beb92
 #include <cppuhelper/servicefactory.hxx>
b1beb92
-#include <cppuhelper/implbase4.hxx>
b1beb92
+#include <cppuhelper/implbase1.hxx>
b1beb92
 #include <cppuhelper/implbase.hxx>
b1beb92
 
b1beb92
 #include <rtl/ref.hxx>
b1beb92
@@ -51,14 +51,12 @@
b1beb92
 
b1beb92
 #include <com/sun/star/uno/Any.hxx>
b1beb92
 
b1beb92
+#include <com/sun/star/lang/XMultiServiceFactory.hpp>
b1beb92
 #include <com/sun/star/io/XInputStream.hpp>
b1beb92
 #include <com/sun/star/io/XOutputStream.hpp>
b1beb92
-#include <com/sun/star/io/XActiveDataSource.hpp>
b1beb92
-#include <com/sun/star/io/XActiveDataSink.hpp>
b1beb92
-#include <com/sun/star/io/XActiveDataControl.hpp>
b1beb92
 #include <com/sun/star/io/XStreamListener.hpp>
b1beb92
-#include <com/sun/star/lang/XInitialization.hpp>
b1beb92
 #include <com/sun/star/beans/NamedValue.hpp>
b1beb92
+#include <com/sun/star/xml/xslt/XXSLTTransformer.hpp>
b1beb92
 
b1beb92
 using namespace ::rtl;
b1beb92
 using namespace ::cppu;
b1beb92
@@ -66,7 +64,6 @@ using namespace ::osl;
b1beb92
 using namespace ::com::sun::star::beans;
b1beb92
 using namespace ::com::sun::star::io;
b1beb92
 using namespace ::com::sun::star::uno;
b1beb92
-using namespace ::com::sun::star::lang;
b1beb92
 
b1beb92
 using ::std::list;
b1beb92
 using ::std::map;
b1beb92
@@ -90,8 +87,7 @@ namespace XSLT
b1beb92
      *
b1beb92
      * See Reader below.
b1beb92
      */
b1beb92
-    class LibXSLTTransformer : public WeakImplHelper4
b1beb92
-            XActiveDataSource, XActiveDataControl, XInitialization>
b1beb92
+    class LibXSLTTransformer : public WeakImplHelper1<com::sun::star::xml::xslt::XXSLTTransformer>
b1beb92
     {
b1beb92
     private:
b1beb92
         static const char* const PARAM_SOURCE_URL;
b1beb92
@@ -102,7 +98,7 @@ namespace XSLT
b1beb92
         static const char* const PARAM_DOCTYPE_PUBLIC;
b1beb92
 
b1beb92
         // the UNO ServiceFactory
b1beb92
-        com::sun::star::uno::Reference<XMultiServiceFactory> m_rServiceFactory;
b1beb92
+        com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> m_rServiceFactory;
b1beb92
 
b1beb92
         com::sun::star::uno::Reference<XInputStream> m_rInputStream;
b1beb92
 
b1beb92
@@ -129,7 +125,7 @@ namespace XSLT
b1beb92
     public:
b1beb92
 
b1beb92
         // ctor...
b1beb92
-        LibXSLTTransformer(const com::sun::star::uno::Reference<XMultiServiceFactory> &r);
b1beb92
+        LibXSLTTransformer(const com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> &r);
b1beb92
 
b1beb92
         // XActiveDataSink
b1beb92
         virtual void SAL_CALL
b1beb92
@@ -169,7 +165,7 @@ namespace XSLT
b1beb92
         ::std::map<const char*, OString> SAL_CALL
b1beb92
         getParameters();
b1beb92
 
b1beb92
-        virtual com::sun::star::uno::Reference<XMultiServiceFactory> SAL_CALL
b1beb92
+        virtual com::sun::star::uno::Reference<com::sun::star::lang::XMultiServiceFactory> SAL_CALL
b1beb92
         getServiceFactory() {
b1beb92
             return m_rServiceFactory;
b1beb92
         }
b1beb92
diff --git a/filter/source/xsltfilter/XSLTFilter.cxx b/filter/source/xsltfilter/XSLTFilter.cxx
b1beb92
index f3ebd2f..36968e7 100644
b1beb92
--- a/filter/source/xsltfilter/XSLTFilter.cxx
b1beb92
+++ b/filter/source/xsltfilter/XSLTFilter.cxx
b1beb92
@@ -41,6 +41,7 @@
b1beb92
 #include <rtl/strbuf.hxx>
b1beb92
 #include <tools/urlobj.hxx>
b1beb92
 
b1beb92
+#include <comphelper/componentcontext.hxx>
b1beb92
 #include <comphelper/interaction.hxx>
b1beb92
 
b1beb92
 #include <com/sun/star/lang/XComponent.hpp>
b1beb92
@@ -72,6 +73,8 @@
b1beb92
 #include <com/sun/star/task/XInteractionHandler.hpp>
b1beb92
 #include <com/sun/star/task/XInteractionRequest.hpp>
b1beb92
 #include <com/sun/star/ucb/InteractiveAugmentedIOException.hpp>
b1beb92
+#include <com/sun/star/xml/xslt/XSLT2Transformer.hpp>
b1beb92
+#include <com/sun/star/xml/xslt/XSLTTransformer.hpp>
b1beb92
 
b1beb92
 #include <xmloff/attrlist.hxx>
b1beb92
 
b1beb92
@@ -102,14 +105,10 @@ namespace XSLT
b1beb92
      * them to an XSLT transformation service. XSLT transformation errors are
b1beb92
      * reported to XSLTFilter.
b1beb92
      *
b1beb92
-     * Currently, two implementations for the XSLT transformation service exist:
b1beb92
-     * a java based service (see XSLTransformer.java) and  a libxslt based
b1beb92
-     * service (LibXSLTTransformer.cxx).
b1beb92
-     *
b1beb92
-     * The libxslt implementation will be used by default.
b1beb92
-     *
b1beb92
-     * If the value of the 2nd "UserData" parameter of the filter configuration is
b1beb92
-     * not empty, the service name given there will be used.
b1beb92
+     * Currently, our transformation service is libxslt based, so it
b1beb92
+     * only supports XSLT 1.0. There is a possibility to use XSLT 2.0
b1beb92
+     * supporting service from an extension for a specific filter; the
b1beb92
+     * service must support com.sun.star.xml.xslt.XSLT2Transformer.
b1beb92
      */
b1beb92
     class XSLTFilter : public WeakImplHelper4
b1beb92
             XStreamListener, ExtendedDocumentHandlerAdapter>
b1beb92
@@ -122,7 +121,7 @@ namespace XSLT
b1beb92
         // DocumentHandler interface of the css::xml::sax::Writer service
b1beb92
         css::uno::Reference<XOutputStream> m_rOutputStream;
b1beb92
 
b1beb92
-        css::uno::Reference<XActiveDataControl> m_tcontrol;
b1beb92
+        css::uno::Reference<xslt::XXSLTTransformer> m_tcontrol;
b1beb92
 
b1beb92
         oslCondition m_cTransformed;
b1beb92
         sal_Bool m_bTerminated;
b1beb92
@@ -135,6 +134,8 @@ namespace XSLT
b1beb92
         OUString
b1beb92
         expandUrl(const OUString&);
b1beb92
 
b1beb92
+        css::uno::Reference<xslt::XXSLTTransformer> impl_createTransformer(const rtl::OUString& rTransformer, const Sequence<Any>& rArgs);
b1beb92
+
b1beb92
     public:
b1beb92
 
b1beb92
         // ctor...
b1beb92
@@ -211,6 +212,43 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False)
b1beb92
         return sExpandedUrl;
b1beb92
     }
b1beb92
 
b1beb92
+    css::uno::Reference<xslt::XXSLTTransformer>
b1beb92
+    XSLTFilter::impl_createTransformer(const rtl::OUString& rTransformer, const Sequence<Any>& rArgs)
b1beb92
+    {
b1beb92
+        css::uno::Reference<xslt::XXSLTTransformer> xTransformer;
b1beb92
+
b1beb92
+        // check if the filter needs XSLT-2.0-capable transformer
b1beb92
+        // COMPATIBILITY: libreoffice 3.5/3.6 used to save the impl.
b1beb92
+        // name of the XSLT 2.0 transformation service there, so check
b1beb92
+        // for that too (it is sufficient to check that there is _a_
b1beb92
+        // service name there)
b1beb92
+        if (rTransformer.toBoolean() || rTransformer.match("com.sun."))
b1beb92
+        {
b1beb92
+            try
b1beb92
+            {
b1beb92
+                xTransformer = xslt::XSLT2Transformer::create(
b1beb92
+                        comphelper::ComponentContext(m_rServiceFactory).getUNOContext(), rArgs);
b1beb92
+            }
b1beb92
+            catch (const Exception&)
b1beb92
+            {
b1beb92
+                // TODO: put a dialog telling about the need to install
b1beb92
+                // xslt2-transformer extension here
b1beb92
+                SAL_WARN("filter.xslt", "could not create XSLT 2.0 transformer");
b1beb92
+                throw;
b1beb92
+            }
b1beb92
+        }
b1beb92
+
b1beb92
+        // instantiation of XSLT 2.0 transformer service failed, or the
b1beb92
+        // filter does not need it
b1beb92
+        if (!xTransformer.is())
b1beb92
+        {
b1beb92
+            xTransformer = xslt::XSLTTransformer::create(
b1beb92
+                    comphelper::ComponentContext(m_rServiceFactory).getUNOContext(), rArgs);
b1beb92
+        }
b1beb92
+
b1beb92
+        return xTransformer;
b1beb92
+    }
b1beb92
+
b1beb92
     void
b1beb92
     XSLTFilter::started() throw (RuntimeException)
b1beb92
     {
b1beb92
@@ -322,11 +360,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False)
b1beb92
         nv.Value <<= OUString(INetURLObject(aURL).getBase());
b1beb92
         args[2] <<= nv;
b1beb92
 
b1beb92
-        OUString serviceName("com.sun.star.comp.documentconversion.LibXSLTTransformer");
b1beb92
-        if (!msUserData[1].isEmpty())
b1beb92
-            serviceName = msUserData[1];
b1beb92
-
b1beb92
-        m_tcontrol = css::uno::Reference<XActiveDataControl> (m_rServiceFactory->createInstanceWithArguments(serviceName, args), UNO_QUERY);
b1beb92
+        m_tcontrol = impl_createTransformer(msUserData[1], args);
b1beb92
 
b1beb92
         OSL_ASSERT(xHandler.is());
b1beb92
         OSL_ASSERT(xInputStream.is());
b1beb92
@@ -486,11 +520,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False)
b1beb92
         nv.Value <<= m_aExportBaseUrl;
b1beb92
         args[3] <<= nv;
b1beb92
 
b1beb92
-        OUString serviceName("com.sun.star.comp.documentconversion.LibXSLTTransformer");
b1beb92
-        if (!msUserData[1].isEmpty())
b1beb92
-            serviceName = msUserData[1];
b1beb92
-
b1beb92
-        m_tcontrol = css::uno::Reference<XActiveDataControl> (m_rServiceFactory->createInstanceWithArguments(serviceName, args), UNO_QUERY);
b1beb92
+        m_tcontrol = impl_createTransformer(msUserData[1], args);
b1beb92
 
b1beb92
         OSL_ASSERT(m_rOutputStream.is());
b1beb92
         OSL_ASSERT(m_tcontrol.is());
b1beb92
@@ -566,7 +596,7 @@ m_rServiceFactory(r), m_bTerminated(sal_False), m_bError(sal_False)
b1beb92
     // --------------------------------------
b1beb92
 #define FILTER_SERVICE_NAME "com.sun.star.documentconversion.XSLTFilter"
b1beb92
 #define FILTER_IMPL_NAME "com.sun.star.comp.documentconversion.XSLTFilter"
b1beb92
-#define TRANSFORMER_SERVICE_NAME "com.sun.star.documentconversion.LibXSLTTransformer"
b1beb92
+#define TRANSFORMER_SERVICE_NAME "com.sun.star.xml.xslt.XSLTTransformer"
b1beb92
 #define TRANSFORMER_IMPL_NAME "com.sun.star.comp.documentconversion.LibXSLTTransformer"
b1beb92
 
b1beb92
     static css::uno::Reference<XInterface> SAL_CALL
b1beb92
diff --git a/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java b/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java
b1beb92
index 1a6d8cf..7036646 100644
b1beb92
--- a/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java
b1beb92
+++ b/filter/source/xsltfilter/com/sun/star/comp/xsltfilter/XSLTransformer.java
b1beb92
@@ -75,6 +75,7 @@ import com.sun.star.registry.XRegistryKey;
b1beb92
 import com.sun.star.uno.AnyConverter;
b1beb92
 import com.sun.star.uno.Type;
b1beb92
 import com.sun.star.uno.UnoRuntime;
b1beb92
+import com.sun.star.xml.xslt.XXSLTTransformer;
b1beb92
 
b1beb92
 //Uno to java Adaptor
b1beb92
 import com.sun.star.lib.uno.adapter.XInputStreamToInputStreamAdapter;
b1beb92
@@ -88,8 +89,8 @@ import net.sf.saxon.FeatureKeys;
b1beb92
  * component on demand (__getServiceFactory()).
b1beb92
  */
b1beb92
 public class XSLTransformer
b1beb92
-        implements XTypeProvider, XServiceName, XServiceInfo, XActiveDataSink,
b1beb92
-        XActiveDataSource, XActiveDataControl, XInitialization, URIResolver, EntityResolver {
b1beb92
+        implements XTypeProvider, XServiceName, XServiceInfo, XXSLTTransformer,
b1beb92
+        URIResolver, EntityResolver {
b1beb92
 
b1beb92
     /**
b1beb92
      * This component provides java based XSL transformations
b1beb92
@@ -132,7 +133,7 @@ public class XSLTransformer
b1beb92
         svcfactory = msf;
b1beb92
     }
b1beb92
 
b1beb92
-    public void initialize(Object[] values) throws com.sun.star.uno.Exception {
b1beb92
+    public void initialize(Object[] args) throws com.sun.star.uno.Exception {
b1beb92
         // some configurable debugging
b1beb92
         String statsfilepath = null;
b1beb92
         if ((statsfilepath = System.getProperty(STATSPROP)) != null) {
b1beb92
@@ -146,6 +147,8 @@ public class XSLTransformer
b1beb92
             }
b1beb92
         }
b1beb92
 
b1beb92
+        Object[] values = (Object[]) args[0];
b1beb92
+
b1beb92
         // reading the values
b1beb92
         NamedValue nv = null;
b1beb92
         debug("The transformation's parameters as 'name = value' pairs:\n");
b1beb92
@@ -444,7 +447,7 @@ public class XSLTransformer
b1beb92
             }
b1beb92
         }
b1beb92
     }    // --- component management interfaces... ---
b1beb92
-    private final static String _serviceName = "com.sun.star.comp.JAXTHelper";
b1beb92
+    private final static String _serviceName = "com.sun.star.xml.xslt.XSLT2Transformer";
b1beb92
 
b1beb92
     // Implement methods from interface XTypeProvider
b1beb92
     public byte[] getImplementationId() {
b1beb92
@@ -494,7 +497,7 @@ public class XSLTransformer
b1beb92
     public static XSingleServiceFactory __getServiceFactory(
b1beb92
             String implName, XMultiServiceFactory multiFactory, XRegistryKey regKey) {
b1beb92
         XSingleServiceFactory xSingleServiceFactory = null;
b1beb92
-        if (implName.indexOf("XSLTransformer") != -1) {
b1beb92
+        if (implName.equals(XSLTransformer.class.getName())) {
b1beb92
             xSingleServiceFactory = FactoryHelper.getServiceFactory(XSLTransformer.class,
b1beb92
                     _serviceName, multiFactory, regKey);
b1beb92
         }
b1beb92
diff --git a/filter/source/xsltfilter/components.rdb b/filter/source/xsltfilter/components.rdb
b1beb92
index 080cb7a..6014b82 100644
b1beb92
--- a/filter/source/xsltfilter/components.rdb
b1beb92
+++ b/filter/source/xsltfilter/components.rdb
b1beb92
@@ -1,8 +1,8 @@
b1beb92
 
b1beb92
 <components xmlns="http://openoffice.org/2010/uno-components">
b1beb92
     <component loader="com.sun.star.loader.Java2" uri="./XSLTFilter.jar">
b1beb92
-        <implementation name="XSLTransformer">
b1beb92
-            <service name="com.sun.star.comp.JAXTHelper"/>
b1beb92
+        <implementation name="com.sun.star.comp.xsltfilter.XSLTransformer">
b1beb92
+            <service name="com.sun.star.xml.xslt.XSLT2Transformer"/>
b1beb92
         </implementation>
b1beb92
     </component>
b1beb92
 </components>
b1beb92
diff --git a/filter/source/xsltfilter/xsltfilter.component b/filter/source/xsltfilter/xsltfilter.component
b1beb92
index 5fb985c..296f2bc 100644
b1beb92
--- a/filter/source/xsltfilter/xsltfilter.component
b1beb92
+++ b/filter/source/xsltfilter/xsltfilter.component
b1beb92
@@ -32,6 +32,6 @@
b1beb92
     <service name="com.sun.star.documentconversion.XSLTFilter"/>
b1beb92
   </implementation>
b1beb92
   <implementation name="com.sun.star.comp.documentconversion.LibXSLTTransformer">
b1beb92
-    <service name="com.sun.star.documentconversion.LibXSLTTransformer"/>
b1beb92
+    <service name="com.sun.star.xml.xslt.XSLTTransformer"/>
b1beb92
   </implementation>
b1beb92
 </component>
b1beb92
diff --git a/offapi/UnoApi_offapi.mk b/offapi/UnoApi_offapi.mk
b1beb92
index 98cca5f..007cc52 100644
b1beb92
--- a/offapi/UnoApi_offapi.mk
b1beb92
+++ b/offapi/UnoApi_offapi.mk
b1beb92
@@ -285,6 +285,10 @@ $(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/xml/sax,\
b1beb92
 	FastShapeContextHandler \
b1beb92
 	FastTokenHandler \
b1beb92
 ))
b1beb92
+$(eval $(call gb_UnoApi_add_idlfiles_nohdl,offapi,offapi/com/sun/star/xml/xslt,\
b1beb92
+	XSLTTransformer \
b1beb92
+	XSLT2Transformer \
b1beb92
+))
b1beb92
 
b1beb92
 
b1beb92
 $(eval $(call gb_UnoApi_add_idlfiles_noheader,offapi,offapi/com/sun/star,\
b1beb92
@@ -4255,6 +4259,11 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/xml/xpath,\
b1beb92
 	XXPathExtension \
b1beb92
 	XXPathObject \
b1beb92
 ))
b1beb92
+
b1beb92
+$(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/xml/xslt,\
b1beb92
+	XXSLTTransformer \
b1beb92
+))
b1beb92
+
b1beb92
 $(eval $(call gb_UnoApi_add_idlfiles,offapi,offapi/com/sun/star/xsd,\
b1beb92
 	DataTypeClass \
b1beb92
 	WhiteSpaceTreatment \
b1beb92
diff --git a/offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl b/offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl
b1beb92
new file mode 100644
b1beb92
index 0000000..af5abed
b1beb92
--- /dev/null
b1beb92
+++ b/offapi/com/sun/star/xml/xslt/XSLT2Transformer.idl
b1beb92
@@ -0,0 +1,30 @@
b1beb92
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
b1beb92
+/*
b1beb92
+ * This file is part of the LibreOffice project.
b1beb92
+ *
b1beb92
+ * This Source Code Form is subject to the terms of the Mozilla Public
b1beb92
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
b1beb92
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
b1beb92
+ */
b1beb92
+
b1beb92
+#ifndef INCLUDED_COM_SUN_STAR_XML_XSLT_XSLT2TRANSFORMER_IDL
b1beb92
+#define INCLUDED_COM_SUN_STAR_XML_XSLT_XSLT2TRANSFORMER_IDL
b1beb92
+
b1beb92
+#include <com/sun/star/xml/xslt/XXSLTTransformer.idl>
b1beb92
+
b1beb92
+module com { module sun { module star { module xml { module xslt {
b1beb92
+
b1beb92
+/** Get XSLT filter transformer supporting XSLT 2.0.
b1beb92
+
b1beb92
+    @since LibreOffice 3.7
b1beb92
+ */
b1beb92
+service XSLT2Transformer : XXSLTTransformer
b1beb92
+{
b1beb92
+    create([in] sequence<any> args);
b1beb92
+};
b1beb92
+
b1beb92
+}; }; }; }; };
b1beb92
+
b1beb92
+#endif
b1beb92
+
b1beb92
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
b1beb92
diff --git a/offapi/com/sun/star/xml/xslt/XSLTTransformer.idl b/offapi/com/sun/star/xml/xslt/XSLTTransformer.idl
b1beb92
new file mode 100644
b1beb92
index 0000000..f9d75e3
b1beb92
--- /dev/null
b1beb92
+++ b/offapi/com/sun/star/xml/xslt/XSLTTransformer.idl
b1beb92
@@ -0,0 +1,32 @@
b1beb92
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
b1beb92
+/*
b1beb92
+ * This file is part of the LibreOffice project.
b1beb92
+ *
b1beb92
+ * This Source Code Form is subject to the terms of the Mozilla Public
b1beb92
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
b1beb92
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
b1beb92
+ */
b1beb92
+
b1beb92
+#ifndef INCLUDED_COM_SUN_STAR_XML_XSLT_XSLTTRANSFORMER_IDL
b1beb92
+#define INCLUDED_COM_SUN_STAR_XML_XSLT_XSLTTRANSFORMER_IDL
b1beb92
+
b1beb92
+#include <com/sun/star/xml/xslt/XXSLTTransformer.idl>
b1beb92
+
b1beb92
+module com { module sun { module star { module xml { module xslt {
b1beb92
+
b1beb92
+/** Get unspecified XSLT filter transformer.
b1beb92
+
b1beb92
+    

It is not safe to expect support for any features except XSLT 1.0 .

b1beb92
+
b1beb92
+    @since LibreOffice 3.7
b1beb92
+  */
b1beb92
+service XSLTTransformer : XXSLTTransformer
b1beb92
+{
b1beb92
+    create([in] sequence<any> args);
b1beb92
+};
b1beb92
+
b1beb92
+}; }; }; }; };
b1beb92
+
b1beb92
+#endif
b1beb92
+
b1beb92
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
b1beb92
diff --git a/offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl b/offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl
b1beb92
new file mode 100644
b1beb92
index 0000000..9316c25
b1beb92
--- /dev/null
b1beb92
+++ b/offapi/com/sun/star/xml/xslt/XXSLTTransformer.idl
b1beb92
@@ -0,0 +1,36 @@
b1beb92
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
b1beb92
+/*
b1beb92
+ * This file is part of the LibreOffice project.
b1beb92
+ *
b1beb92
+ * This Source Code Form is subject to the terms of the Mozilla Public
b1beb92
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
b1beb92
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
b1beb92
+ */
b1beb92
+
b1beb92
+#ifndef INCLUDED_COM_SUN_STAR_XML_XSLT_XXSLTTRANSFORMER_IDL
b1beb92
+#define INCLUDED_COM_SUN_STAR_XML_XSLT_XXSLTTRANSFORMER_IDL
b1beb92
+
b1beb92
+#include <com/sun/star/io/XActiveDataControl.idl>
b1beb92
+#include <com/sun/star/io/XActiveDataSink.idl>
b1beb92
+#include <com/sun/star/io/XActiveDataSource.idl>
b1beb92
+#include <com/sun/star/lang/XInitialization.idl>
b1beb92
+
b1beb92
+module com { module sun { module star { module xml { module xslt {
b1beb92
+
b1beb92
+/** An interface for XSLT transformers.
b1beb92
+
b1beb92
+    @since LibreOffice 3.7
b1beb92
+ */
b1beb92
+interface XXSLTTransformer
b1beb92
+{
b1beb92
+    interface com::sun::star::io::XActiveDataControl;
b1beb92
+    interface com::sun::star::io::XActiveDataSink;
b1beb92
+    interface com::sun::star::io::XActiveDataSource;
b1beb92
+    interface com::sun::star::lang::XInitialization;
b1beb92
+};
b1beb92
+
b1beb92
+}; }; }; }; };
b1beb92
+
b1beb92
+#endif
b1beb92
+
b1beb92
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
b1beb92
-- 
b1beb92
1.7.11.7
b1beb92