Hi Michael,
I came across the following minor stumbling block when trying to instantiate Saxon directly as opposed to searching through CLASSPATH recommended by yourself earlier:
( i ) Replaced import javax.xml.transform.* with net.sf.saxon.TransformerFactoryImpl.
( ii ) Replaced TransformerFactory stateFactory = TransformerFactory.newInstance() with
net.sf.saxon.TransformerFactoryImpl hobbiesTransformer = new net.sf.saxon.TransformerFactoryImpl().
FileInputStream hobbiesStyleSheetIS = new FileInputStream(hobbiesStyleSheet);
BufferedInputStream hobbiesStyleSheetBIS = new BufferedInputStream(hobbiesStyleSheetIS);
( iii ) Replaced Transformer hobbiesTransformer = hobbiesFactory.newTransformer(new StreamSource(hobbiesStyleSheetBIS)) with
hobbiesTransformer.newTransformer(new StreamSource(hobbiesStyleSheetBIS)).
JDOMSource hobbiesSource = new JDOMSource(hobbiesOriginaljdomDocument);
JDOMResult hobbiesResult = new JDOMResult();
System.err.println(hobbiesTransformer.getClass());
( iv ) Would like to replace hobbiesTransformer.transform(hobbiesSource, hobbiesResult) with
stateTransformer.? but couldn't find a match.
In other word, I couldn't find an equivalent statement in Saxon91 to do the transformation in step ( iv ) to swap out the default Java Xalan code.
Thanks a lot for your help,
Jack
From: Jack Bush [mailto:netbeansfan@yahoo.com.au]
Sent: 06 February 2009 03:02
To: Michael Kay
Cc: xml-dev@lists.xml.org
Subject: Re: [xml-dev] XSTL stylesheet workarounds for exceptionsHi Michael,
I ran the transformation the same way as when using Saxon 6.5 with the following Java code from Netbeans 6.1:
.......
SAXBuilder stateBuilder = new SAXBuilder("org.ccil.cowan.tagsoup.Parser", false);
FileInputStream hobbiesIS = new FileInputStream(hobbiesXmlFile);
BufferedInputStream hobbiesBIS = new BufferedInputStream(hobbiesIS);
Document hobbiesOriginaljdomDocument = stateBuilder.build(hobbiesBIS);
TransformerFactory hobbiesFactory = TransformerFactory.newInstance();
FileInputStream hobbiesStyleSheetIS = new FileInputStream(hobbiesStyleSheet);
BufferedInputStream hobbiesStyleSheetBIS = new BufferedInputStream(hobbiesStyleSheetIS);
Transformer hobbiesTransformer = stateFactory.newTransformer(new StreamSource(hobbiesStyleSheetBIS));
JDOMSource hobbiesSource = new JDOMSource(hobbiesOriginaljdomDocument);
JDOMResult hobbiesResult = new JDOMResult();
stateTransformer.transform(hobbiesSource, hobbiesResult);
Nothing has been changed apart from replacing saxon.jar, saxon-jdom.jar, saxpath.jar with saxon9.jar, saxon9-jdom.jar, saxon9-xpath.jar in the compilation CLASSPATH.
I run this program (SHIFT-F6 or RUN => Run file) to start transformation in Netbeans.
Thanks,
Jack
From: Michael Kay <mike@saxonica.com>
To: Jack Bush <netbeansfan@yahoo.com.au>
Cc: xml-dev@lists.xml.org
Sent: Friday, 6 February, 2009 9:23:09 AM
Subject: RE: [xml-dev] XSTL stylesheet workarounds for exceptions
How are you running the transformation?Michael Kayhttp://www.saxonica.com/
From: Jack Bush [mailto:netbeansfan@yahoo.com.au]
Sent: 05 February 2009 19:23
To: Michael Kay
Cc: xml-dev@lists.xml.org
Subject: Re: [xml-dev] XSTL stylesheet workarounds for exceptionsHi Michael,Your are right and I have reverted the XML version in the stylesheet to 1.0. However, I am back to where I started from by getting the can find empty() again.Below is the detail of my CLASSPATH:E:\Software Development\XML\tagsoup-1.2.jar;E:\Software Development\XML\JDOM\jdom-1.1\build\jdom.jar;E:\Software Development\XML\JDOM\jdom-1.1\lib\jaxen-jdom.jar;E:\Software Development\XML\JDOM\jdom-1.1\lib\jaxen-core.jar;E:\Software Development\XML\JDOM\jdom-1.1\lib\xalan.jar;E:\Software Development\XML\Saxon\9.1\saxon9-jdom.jar;E:\Software Development\XML\Saxon\9.1\saxon9-xpath.jar;E:\Software Development\XML\Saxon\9.1\saxon9.jar;E:\Software Development\XML\JDOM\jdom-1.1\lib\xerces.jar;E:\Software Development\XML\JDOM\jdom-1.1\lib\saxpath.jarAny idea on which jar file is missing?Thanks a lot,Jack
From: Michael Kay <mike@saxonica.com>
To: Jack Bush <netbeansfan@yahoo.com.au>
Cc: xml-dev@lists.xml.org
Sent: Friday, 6 February, 2009 2:07:45 AM
Subject: RE: [xml-dev] XSTL stylesheet workarounds for exceptions
It sounds as if you changed the XML version to "2.0" when you intended to change the XSLT version.Michael Kayhttp://www.saxonica.com/
From: Jack Bush [mailto:netbeansfan@yahoo.com.au]
Sent: 05 February 2009 12:30
To: Michael Kay
Cc: xml-dev@lists.xml.org
Subject: Re: [xml-dev] XSTL stylesheet workarounds for exceptionsHi Michael,
I encountered the following error when switching over to Saxon 9.1 Open Source version so that I could use the empty() as suggested:
[Fatal Error] javax..xml.transform.stream.StreamSource:1:20: XML version "2.0" is not supported, only XML 1.0 is supported.
javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerConfigurationException: javax..xml.transform.TransformerException: org.xml.sax.SAXParseException: XML version "2.0" is not supported, only XML 1.0 is supported.
at org..apache.xalan.processor.TransformerFactoryImpl..newTransformer(TransformerFactoryImpl.java:795)
Below is where StreamSource is used in my Java application:
Transformer hobbiesTransformer = hobbiesFactory.newTransformer(new StreamSource(hobbiesStyleSheetBIS));
JDOMSource hobbiesSource = new JDOMSource(hobbiesOriginaljdomDocument);
JDOMResult hobbiesResult = new JDOMResult();
hobbiesTransformer.transform(hobbiesSource, hobbiesResult);
What is the alternative to using StreamSource in XSLT 2.0?
Many thanks again,
Jack
From: Michael Kay <mike@saxonica.com>
To: Jack Bush <netbeansfan@yahoo.com.au>; butlerdi@gmail.com
Cc: xml-dev@lists.xml.org
Sent: Thursday, 5 February, 2009 12:26:02 AM
Subject: RE: [xml-dev] XSTL stylesheet workarounds for exceptions
<xsl:template match="ns:p[ns:strong='Hobbie:']|ns:p[ns:strong='Hobbies:']">
Now the only question left is the second half ( ii ) of the original post
included below:
( ii ) I also like to add a default generic value for any missing
element. Say if there are no
<p><strong>Hobbies:</strong></p> in such document, yet I still would
like to generate a
null element such as <hobbies>Unknown</hobbies>.
You need to do this at the next level up, where you are applying-templates
to the p elements. Something like
<xsl:variable name="hobbies" select="ns:p[ns:strong='Hobbies:']"/>
<xsl:apply-templates select="$hobbies"/>
<xsl:if test="empty($hobbies)">
... default output goes here ...
</xsl:if>
Michael Kay
http://www.saxonica.com/
Make Yahoo!7 your homepage and win a trip to the Quiksilver Pro. Find out more.
Make Yahoo!7 your homepage and win a trip to the Quiksilver Pro. Find out more..
Make Yahoo!7 your homepage and win a trip to the Quiksilver Pro. Find out more.