<?xml version="1.0" encoding="UTF-8"?>
<MetamergeConfig IDIversion="Created by TDI7.0 - 2010-07-06" created="Thu Sep 09 14:48:44 CEST 2010" createdBy="DK21740" modified="Thu Sep 09 14:48:44 CEST 2010" modifiedBy="DK21740" version="7.0">
    <Folder name="AssemblyLines">
        <AssemblyLine name="xsltWithJava">
            <Settings/>
            <Hooks/>
            <CheckpointConfig/>
            <SandboxConfig/>
            <SimulationConfig>
                <SimulationStates>
                    <Component name="UsingJavaGoogleTranslate" state="Enabled"/>
                    <Component name="UsingJavaGoogleTranslateValidationFails" state="Enabled"/>
                    <Component name="UsingJavaGoogleTranslateValidation" state="Enabled"/>
                </SimulationStates>
                <ProxySettings/>
            </SimulationConfig>
            <LogConfig/>
            <ContainerEF name="EntryFeedContainer"/>
            <ContainerDF name="DataFlowContainer">
                <Script name="UsingJavaGoogleTranslate">
                    <parameter name="script"><![CDATA[myXML = system.getScriptText("XHTML_simplePage");
myXSL = system.getScriptText("XSL_XSLTWithJavaGoogleTranslate");

myParam = [];
xmlOut = xslTransformWithParams(myXSL,myXML,myParam);

task.logmsg("All text translated into Danish - xmlOut : \n" + xmlOut);]]></parameter>
                </Script>
                <Script name="UsingJavaGoogleTranslateValidationFails">
                    <parameter name="script"><![CDATA[myXML = system.getScriptText("XHTML_simplePageWithValidation");
myXSL = system.getScriptText("XSL_XSLTWithJavaGoogleTranslate");

myParam = [];
xmlOut = xslTransformWithParams(myXSL,myXML,myParam);

task.logmsg("All text translated into Danish - xmlOut : \n" + xmlOut);]]></parameter>
                </Script>
                <Script name="UsingJavaGoogleTranslateValidation">
                    <parameter name="script"><![CDATA[myXML = system.getScriptText("XHTML_simplePageWithValidation");
myXSL = system.getScriptText("XSL_XSLTWithJavaGoogleTranslate");

xmlOut = xslTransformWithValidation(myXSL,myXML);

task.logmsg("All text translated into Danish - xmlOut : \n" + xmlOut);]]></parameter>
                </Script>
            </ContainerDF>
            <ThreadOptions/>
            <Operations/>
            <InitParams>
                <Schema name="AssemblyLineInitParams"/>
            </InitParams>
        </AssemblyLine>
    </Folder>
    <Folder name="Connectors"/>
    <Folder name="Parsers"/>
    <Folder name="Scripts">
        <Script name="XHTML_simplePage">
            <parameter name="autoInclude">false</parameter>
            <parameter name="includeFiles"/>
            <parameter name="script"><![CDATA[<html lang="en-us" xml:lang="en-us">
<body>
<h1>This is a heading</h1>
And here goes the text
</body>
</html>]]></parameter>
        </Script>
        <Script name="XSL_XSLTWithJavaGoogleTranslate">
            <parameter name="includeFiles"/>
            <parameter name="script"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version = "1.0"
	xmlns:string="xalan://java.lang.String"
	xmlns:se="xalan://com.ibm.di.script.ScriptEngine"
	xmlns:itdi="xalan://com.ibm.di.function.UserFunctions" >

<xsl:output method="html" indent="yes"/>

<xsl:template match='/'>
<xsl:apply-templates/>
</xsl:template>

<xsl:template match='*'>
  <xsl:copy>
    <xsl:apply-templates select='*|comment()|@*|text()'/>
  </xsl:copy>
</xsl:template>

<xsl:template match='@*'>
     <xsl:attribute name="{name(.)}">
        <xsl:value-of select="normalize-space(.)"/>
      </xsl:attribute>
</xsl:template>

<xsl:template match="comment()">
  <xsl:comment>
    <xsl:value-of select="normalize-space(.)"/>
  </xsl:comment>
</xsl:template>

<xsl:template match="text()">
<xsl:variable name="myServer" select="itdi:getServer()" />
<xsl:variable name="mySE" select="se:new('javascript',$myServer)" />
<xsl:variable name="temp0" select="se:loadScript($mySE,$myServer,'myContext','SCRIPT_XSLTWithJavaGoogleTranslate','true')" />
<xsl:if test="string-length(normalize-space(.)) &gt; 0">
<xsl:comment><xsl:text> </xsl:text><xsl:value-of select="normalize-space(.)"/><xsl:text> </xsl:text></xsl:comment>
<xsl:text>
</xsl:text>
<xsl:variable name="myParam" select="string:split(normalize-space(.),'$')" />
<xsl:value-of select="se:call($mySE,'googleTranslate',$myParam)"/>
<xsl:text>
</xsl:text>
</xsl:if>
</xsl:template>

</xsl:stylesheet>]]></parameter>
        </Script>
        <Script name="SCRIPT_javaTransformWithParams">
            <parameter name="autoInclude">true</parameter>
            <parameter name="includeFiles"/>
            <parameter name="script"><![CDATA[function xslTransformWithParams( xsl, xml, params ) {

	os = new java.io.ByteArrayOutputStream();
	is = new java.io.ByteArrayInputStream(xsl.getBytes("UTF-8"));
	ss = new javax.xml.transform.stream.StreamSource(is);
	is1 = new java.io.ByteArrayInputStream(xml.getBytes("UTF-8"));
	ss1 = new javax.xml.transform.stream.StreamSource(is1);
	sr = new javax.xml.transform.stream.StreamResult(os);
	transformerfactory = javax.xml.transform.TransformerFactory.newInstance();
	transformer = transformerfactory.newTransformer(ss);
	// Add paramaters to the transform
	for (i=0; i<params.length; i++) {
		transformer.setParameter((params[i])[0],(params[i])[1]);
	}
	// Set the output encoding
	outputEncoding = transformer.getOutputProperty("encoding")
	transformer.transform(ss1, sr);
	if (outputEncoding != null) {
		result = os.toString(outputEncoding);
	} else {
		result = os.toString();
	}
	return result;
}]]></parameter>
        </Script>
        <Script name="SCRIPT_XSLTWithJavaGoogleTranslate">
            <parameter name="autoInclude">true</parameter>
            <parameter name="includeFiles"/>
            <parameter name="script"><![CDATA[//Perform translation using the google translation api
//relies on the availability of google-api-translate-java-0.51.jar in jarpath
//Modified to read from/to language from external property file
function googleTranslate(inputText) {
	myText = new java.lang.String(inputText);
	translatedText = new java.lang.String();
	fromLanguage = new java.lang.String();
	toLanguage = new java.lang.String();

	fromLanguage = com.google.api.translate.Language.ENGLISH;
	toLanguage = com.google.api.translate.Language.DANISH;

	//Translate
	try {
		myTranslatedText = com.google.api.translate.Translate.translate(myText, fromLanguage, toLanguage);
	}
	catch (ex) {
		//retry if it fails
		myTranslatedText = com.google.api.translate.Translate.translate(myText, fromLanguage, toLanguage);
	}

	myTranslatedText = myTranslatedText.replaceAll('\\[\\(([0-9])\\)\\]','[ {$1} ]'); // fix "[(<n>)]" to "[ {<n>} ]"
	myTranslatedText = myTranslatedText.replaceAll('\\(([0-9])\\)','{$1}'); // fix "(<n)" to "{<n>}"
	myTranslatedText = myTranslatedText.replaceAll('&quot;','"'); // fix &quot; to " 
	myTranslatedText = myTranslatedText.replaceAll('\\ " ([^\\\\]) \\ "','\"$1\" '); // fix '\ "' to '\ '
	myTranslatedText = myTranslatedText.replaceAll('\\.</b>','</b>\\.'); // fix '.</b>' to '</b>.'
	myTranslatedText = myTranslatedText.replaceAll(' \\\\ N','\\\\n'); // fix '\ N' to '\n'
	
	// Escape quotes
	myTranslatedText = myTranslatedText.replaceAll('"','\\\\"'); 

	//Fix bad translations
	//myTranslatedText = fixTranslation(myTranslatedText,"DA");

	//task.logmsg("DEBUG","Original text : " + myText + " - Translated text : " + myTranslatedText);

	return(myTranslatedText);
}]]></parameter>
        </Script>
        <Script name="XHTML_simplePageWithValidation">
            <parameter name="includeFiles"/>
            <parameter name="script"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en-us" xml:lang="en-us">
<body>
<h1>This is a heading</h1>
And here goes the text
</body>
</html>]]></parameter>
        </Script>
        <Script name="SCRIPT_javaTransformWithValidation">
            <parameter name="autoInclude">true</parameter>
            <parameter name="includeFiles"/>
            <parameter name="script"><![CDATA[//Support DTD checking suppression
//and Catalog support

function xslTransformWithValidation( xsl, xml ) {

//Set up SAX inputSource for xsl stylesheet
	ssr = new java.io.StringReader(xsl);
	inps = new org.xml.sax.InputSource(ssr);

//Set up SAX inputSource for xml data
	ssr1 = new java.io.StringReader(xml);
	inps1 = new org.xml.sax.InputSource(ssr1);

//Set up XMLReader and turn off validation
	xr = org.xml.sax.helpers.XMLReaderFactory.createXMLReader();
	xr.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd",false); // Does not work

//Set up Catalog resolver - catalog.properties must be in <TDI_HOME>/classes 
//If validation is swithced off this will NOT be used...
	cr = new org.apache.xml.resolver.tools.CatalogResolver();
	xr.setEntityResolver(cr);

//Create SAXSource for xsl and associate it with the XMLReader
	saxs = new javax.xml.transform.sax.SAXSource(xr,inps);
	saxs.setXMLReader(xr);

//Create SAXSource for xml and associate it with the XMLReader
	saxs1 = new javax.xml.transform.sax.SAXSource(xr,inps1);
	saxs1.setXMLReader(xr);

//Create OutputStream for the transformation
	os = new java.io.ByteArrayOutputStream();
	sr = new javax.xml.transform.stream.StreamResult(os);

//Setup the transformer and transform...
	transformerfactory = javax.xml.transform.sax.SAXTransformerFactory.newInstance();
	transformer = transformerfactory.newTransformer(saxs);
	outputEncoding = transformer.getOutputProperty("encoding")
	transformer.transform(saxs1, sr);
	if (outputEncoding != null) {
		result = os.toString(outputEncoding); // This is difference to system.xslTransform
	} else {
		result = os.toString();
	}
	return result;
}]]></parameter>
        </Script>
    </Folder>
    <JavaLibraries/>
    <JavaProperties/>
    <Folder name="Includes"/>
    <Folder name="Config">
        <LogConfig name="Logging"/>
        <InstanceProperties name="AutoStart">
            <AutoStart/>
        </InstanceProperties>
        <TombstonesConfig name="Tombstones"/>
        <SolutionInterface name="SolutionInterface"/>
    </Folder>
    <Folder name="Functions"/>
    <Folder name="AttributeMaps"/>
    <Properties name="Properties">
        <Stores>
            <PropertyStore name="Solution-Properties">
                <Parser>
                    <Schema name="Input">
                        <InheritFrom>[parent]</InheritFrom>
                    </Schema>
                    <Schema name="Output">
                        <InheritFrom>[parent]</InheritFrom>
                    </Schema>
                </Parser>
                <RawConnector>
                    <InheritFrom>system:/Connectors/ibmdi.Properties</InheritFrom>
                    <parameter name="collectionType">Solution-Properties</parameter>
                </RawConnector>
                <Key>key</Key>
                <Value>value</Value>
                <ReadOnly>false</ReadOnly>
                <InitialLoad>true</InitialLoad>
                <CacheTimeout>0</CacheTimeout>
            </PropertyStore>
            <PropertyStore name="Global-Properties">
                <Parser>
                    <Schema name="Input">
                        <InheritFrom>[parent]</InheritFrom>
                    </Schema>
                    <Schema name="Output">
                        <InheritFrom>[parent]</InheritFrom>
                    </Schema>
                </Parser>
                <RawConnector>
                    <InheritFrom>system:/Connectors/ibmdi.Properties</InheritFrom>
                    <parameter name="collectionType">Global-Properties</parameter>
                </RawConnector>
                <Key>key</Key>
                <Value>value</Value>
                <ReadOnly>false</ReadOnly>
                <InitialLoad>true</InitialLoad>
                <CacheTimeout>0</CacheTimeout>
            </PropertyStore>
            <PropertyStore name="System-Properties">
                <Parser>
                    <Schema name="Input">
                        <InheritFrom>[parent]</InheritFrom>
                    </Schema>
                    <Schema name="Output">
                        <InheritFrom>[parent]</InheritFrom>
                    </Schema>
                </Parser>
                <RawConnector>
                    <InheritFrom>system:/Connectors/ibmdi.Properties</InheritFrom>
                    <parameter name="collectionType">System-Properties</parameter>
                </RawConnector>
                <Key>key</Key>
                <Value>value</Value>
                <ReadOnly>false</ReadOnly>
                <InitialLoad>true</InitialLoad>
                <CacheTimeout>0</CacheTimeout>
            </PropertyStore>
            <PropertyStore name="Test">
                <Parser>
                    <Schema name="Input">
                        <InheritFrom>[parent]</InheritFrom>
                    </Schema>
                    <Schema name="Output">
                        <InheritFrom>[parent]</InheritFrom>
                    </Schema>
                </Parser>
                <RawConnector>
                    <InheritFrom>system:/Connectors/ibmdi.Properties</InheritFrom>
                    <parameter name="collection">@SUBSTITUTE{config.$directory}/Test.properties</parameter>
                    <parameter name="collectionType">Test</parameter>
                </RawConnector>
                <Key>key</Key>
                <Value>value</Value>
                <ReadOnly>false</ReadOnly>
                <InitialLoad>true</InitialLoad>
                <CacheTimeout>0</CacheTimeout>
            </PropertyStore>
            <PropertyStore name="Java-Properties">
                <Parser>
                    <Schema name="Input">
                        <InheritFrom>[parent]</InheritFrom>
                    </Schema>
                    <Schema name="Output">
                        <InheritFrom>[parent]</InheritFrom>
                    </Schema>
                </Parser>
                <RawConnector>
                    <InheritFrom>system:/Connectors/ibmdi.Properties</InheritFrom>
                    <parameter name="collection">@SUBSTITUTE{config.$directory}/Test.properties</parameter>
                    <parameter name="collectionType">Java-Properties</parameter>
                </RawConnector>
                <Key>key</Key>
                <Value>value</Value>
                <ReadOnly>false</ReadOnly>
                <InitialLoad>true</InitialLoad>
                <CacheTimeout>0</CacheTimeout>
            </PropertyStore>
        </Stores>
    </Properties>
</MetamergeConfig>
