[XML-DEV Mailing List Archive Home]
[By Thread]
[By Date]
[Recent Entries]
[Reply To This Message]
RE: XSTL stylesheet workarounds for exceptions
- From: "Michael Kay" <mike@s...>
- To: "'Jack Bush'" <netbeansfan@y...>
- Date: Fri, 6 Feb 2009 09:21:09 -0000
Do
System.err.println(hobbiesTransformer.getClass())
to see what XSLT transformation engine you have loaded.
All the evidence suggests it's a 1.0 transformer - probably Xalan, possibly
Saxon6.
Relying on the classpath to pick up the right XSLT
engine is notoriously error-prone. If your code depends on having an XSLT 2.0
processor, the safest thing is to instantiate Saxon
directly:
hobbiesTransformer = new
net.sf.saxon.TransformerFactoryImpl();
This is incidentally much faster than searching the
classpath. (In extreme cases, searching the classpath to find a
TransformerFactory can take longer than the entire
transformation).
If you don't want a compile-time reference to Saxon in
your code, you can either (a) instantiate the factory using reflection, or (b)
set the system property
System.setProperty("javax.xml.transform.TransformerFactory",
"net.sf.saxon.TransformerFactoryImpl")
Michael Kay
http://www.saxonica.com/
Hi 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@s...> To:
Jack Bush <netbeansfan@y...> Cc: xml-dev@l... Sent: Friday, 6 February, 2009 9:23:09
AM Subject: RE:
XSTL stylesheet workarounds for exceptions
How are you running the
transformation?
Michael Kay
http://www.saxonica.com/
Hi 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.jar
Any idea on which jar file is missing?
Thanks a lot,
Jack
From: Michael Kay
<mike@s...> To: Jack Bush
<netbeansfan@y...> Cc: xml-dev@l... Sent: Friday, 6 February, 2009 2:07:45
AM Subject: RE:
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 Kay
http://www.saxonica.com/
Hi 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@s...> To: Jack Bush
<netbeansfan@y...>; butlerdi@g... Cc: xml-dev@l... Sent: Thursday, 5 February, 2009
12:26:02 AM Subject: RE:
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. http://au.rd.yahoo.com/homepage/mailtagline/*http://au.docs.yahoo.com/homepageset/?p1=other&p2=au&p3=tagline.
Make Yahoo!7 your homepage and win a trip to the Quiksilver Pro. http://au.rd.yahoo.com/homepage/mailtagline/*http://au.docs.yahoo.com/homepageset/?p1=other&p2=au&p3=tagline..
Make Yahoo!7 your homepage and win a trip to the Quiksilver Pro. http://au.rd.yahoo.com/homepage/mailtagline/*http://au.docs.yahoo.com/homepageset/?p1=other&p2=au&p3=tagline.

[Date Prev]
| [Thread Prev]
| [Thread Next]
| [Date Next]
--
[Date Index]
| [Thread Index]
|
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format
RSS 2.0 |
 |
Atom 0.3 |
 |
|
Stylus Studio has published XML-DEV in RSS and ATOM formats,
enabling users to easily subcribe to the list from their preferred news reader application.
|
Stylus Studio Sponsored Links are added links designed to provide related and additional information to the visitors of this website.
they were not included by the author in the initial post. To view the content without the Sponsor Links please
click here.
|
|