2016-12-24 2 views
2

Ich bin in der Lage XSLT 1.0 in Java zu verwenden, wie in dem folllowing Beispiel: -Wie kann ich XSLT 2.0 und XSLT 3.0 in Java verwenden?

copy.xml

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="identityxfm.xsl"?> 
<catalog> 
    <book id="bk101"> 
     <author>Gambardella, Matthew</author> 
     <title>XML Developer's Guide</title> 
     <genre>Computer</genre> 
     <price>44.95</price> 
     <publish_date>2000-10-01</publish_date>   
     <description>An in-depth look at creating applications with 
XML.</description> 
    </book> 
    <book id="bk102"> 
     <author>Ralls, Kim</author> 
     <title>Midnight Rain</title> 
     <genre>Fantasy</genre> 
     <price>5.95</price> 
     <publish_date>2000-12-16</publish_date> 
     <description>A former architect battles corporate zombies, 
an evil sorceress, and her own childhood to become queen of the 
world.</description> 
    </book> 
    <book id="bk103"> 
     <author>Corets, Eva</author> 
     <title>Maeve Ascendant</title> 
     <genre>Fantasy</genre> 
     <price>5.95</price> 
     <publish_date>2000-11-17</publish_date> 
     <description>After the collapse of a nanotechnology society 
in England, the young survivors lay the foundation for a new 
society.</description> 
    </book> 
</catalog> 

copy.xsl

<?xml version="1.0"?> 
<xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 

    <xsl:template match="/ | @* | node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@* | node()"/> 
    </xsl:copy> 
    </xsl:template> 

</xsl:stylesheet> 

Copy.java

package com.data.transform; 

import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.stream.StreamResult; 
import javax.xml.transform.stream.StreamSource; 

public class Copy { 

    public static void main(String args[]) throws Exception { 
     StreamSource source = new StreamSource("copy.xml"); 
     StreamSource stylesource = new StreamSource("copy.xsl"); 

     TransformerFactory factory = TransformerFactory.newInstance(); 
     Transformer transformer = factory.newTransformer(stylesource); 

     StreamResult result = new StreamResult(System.out); 
     transformer.transform(source, result); 
     } 
} 

Ausgabe

<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="identityxfm.xsl"?><catalog> 
    <book id="bk101"> 
     <author>Gambardella, Matthew</author> 
     <title>XML Developer's Guide</title> 
     <genre>Computer</genre> 
     <price>44.95</price> 
     <publish_date>2000-10-01</publish_date>   
     <description>An in-depth look at creating applications with 
XML.</description> 
    </book> 
    <book id="bk102"> 
     <author>Ralls, Kim</author> 
     <title>Midnight Rain</title> 
     <genre>Fantasy</genre> 
     <price>5.95</price> 
     <publish_date>2000-12-16</publish_date> 
     <description>A former architect battles corporate zombies, 
an evil sorceress, and her own childhood to become queen of the 
world.</description> 
    </book> 
    <book id="bk103"> 
     <author>Corets, Eva</author> 
     <title>Maeve Ascendant</title> 
     <genre>Fantasy</genre> 
     <price>5.95</price> 
     <publish_date>2000-11-17</publish_date> 
     <description>After the collapse of a nanotechnology society 
in England, the young survivors lay the foundation for a new 
society.</description> 
    </book> 
</catalog> 

Aber jetzt möchte ich einige Dinge verwenden, die in XSLT 2.0 und XSLT 3.0 (wie xsl:analyze-string, xsl:try usw.) in Java enthalten sind. Wie kann ich das machen ?

+0

Verwenden Sie eine Java-Bibliothek, die das implementiert. Suchen Sie im Internet nach einem. – Andreas

Antwort

5

Erhalten Saxon 9 HE von Maven oder Sourceforge und legt es auf dem Classpath, dann haben Sie XSLT-2.0-Unterstützung mit Saxon 9.x vor 9.8 oder XSLT 3.0-Unterstützung (mit Ausnahme von Streaming-Funktionen höherer Ordnung, xsl:evaluate, schema-Bewusstsein, Abwärtskompatibilität) mit 9.8. Für die volle Unterstützung von XSLT 3.0 benötigen Sie to download Saxon 9 PE or EE from Saxonica und fügen Sie es zusammen mit einer license Sie kaufen oder eine Testlizenz, die Sie auf dem Classpath anfordern.

+0

Ich habe das getan. Jetzt kann ich XSLT 2 verwenden, bekomme aber immer noch Fehler für XSLT 3, da die Schlüsselwörter (die in XSLT 3 eingeführt werden) nicht erkannt werden. Gibt es eine andere Möglichkeit, XSLT 3 in Java zu verwenden? – user6276653

+0

Bitte geben Sie Details, was Sie genau gemacht haben, beginnen Sie mit dem Lesen der Dokumentation von Saxon, insbesondere http://saxonica.com/html/documentation/about/license/, um zu sehen und zu überprüfen, ob Sie PE oder EE ordnungsgemäß mit einem ausführen Lizenz. Siehe auch http://saxonica.com/html/documentation/using-xsl/embedding/jaxp-transformation.html. Wenn Sie weiterhin Probleme haben, posten Sie die Details, was Sie getan haben und welche Fehlermeldungen Sie erhalten, vorzugsweise im Sächsischen Hilfeforum https://saxonica.plan.io/projects/saxon/boards oder hier mit einer neuen Frage, die als saxon gekennzeichnet ist . –