Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


RE: [xml-dev] XSTL stylesheet workarounds for exceptions

From: "Michael Kay" <mike@--------.--->
To: "'Jack Bush'" <netbeansfan@-----.---.-->
Date: 2/6/2009 9:22:00 AM
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/


  _____  

From: Jack Bush [mailto:netbeansfan@y...] 
Sent: 06 February 2009 03:02
To: Michael Kay
Cc: xml-dev@l...
Subject: Re: [xml-dev] XSTL stylesheet workarounds for exceptions


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: [xml-dev] XSTL stylesheet workarounds for exceptions


How are you running the transformation?
 
Michael Kay
http://www.saxonica.com/


  _____  

From: Jack Bush [mailto:netbeansfan@y...] 
Sent: 05 February 2009 19:23
To: Michael Kay
Cc: xml-dev@l...
Subject: Re: [xml-dev] XSTL stylesheet workarounds for exceptions


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: [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 Kay
http://www.saxonica.com/


  _____  

From: Jack Bush [mailto:netbeansfan@y...] 
Sent: 05 February 2009 12:30
To: Michael Kay
Cc: xml-dev@l...
Subject: Re: [xml-dev] XSTL stylesheet workarounds for exceptions


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(Transform
erFactoryImpl.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: [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
<http://au.rd.yahoo.com/homepage/mailtagline/*http://au.docs.yahoo.com/homep
ageset/?p1=other&p2=au&p3=tagline> more.


  _____  

Make Yahoo!7 your homepage and win a trip to the Quiksilver Pro. Find out
<http://au.rd.yahoo.com/homepage/mailtagline/*http://au.docs.yahoo.com/homep
ageset/?p1=other&p2=au&p3=tagline> more..


  _____  

Make Yahoo!7 your homepage and win a trip to the Quiksilver Pro. Find out
more
<http://au.rd.yahoo.com/homepage/mailtagline/*http://au.docs.yahoo.com/homep
ageset/?p1=other&p2=au&p3=tagline> .



transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent