2016-12-24 13 views
2

Я могу использовать XSLT 1.0 в Java, как показано в folllowing Например: -Как использовать XSLT 2.0 и XSLT 3.0 в Java?

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); 
     } 
} 

Выход

<?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> 

Но теперь я хочу использовать несколько вещей, которые включены в XSLT 2.0 и XSLT 3.0 (например, xsl:analyze-string, и т. Д.) В Java. Как я могу это сделать ?

+0

Используйте библиотеку Java, реализующую это. Найдите в Интернете, чтобы найти его. – Andreas

ответ

5

Получить Saxon 9 HE с Maven или Sourceforge и поставить его на пути к классам, то у вас есть поддержка XSLT 2.0 с саксонской 9.x до поддержки 9.8 или XSLT 3.0 (за исключением потоковой передачи функций высшего порядка, xsl:evaluate, схемы осознания, обратная совместимость) с 9.8. Для полной поддержки XSLT 3.0 вам нужно to download Saxon 9 PE or EE from Saxonica и поместите его вместе с license, которую вы покупаете, или пробную лицензию, которую вы запрашиваете по пути к классам.

+0

Я сделал это. Теперь я могу использовать XSLT 2, но я все еще получаю ошибку для XSLT 3, поскольку ключевые слова (которые представлены в XSLT 3) не распознаются. Любой другой способ использования XSLT 3 в Java? – user6276653

+0

Просьба представить подробную информацию о том, что вы сделали точно, начните с чтения документации Saxon, в частности http://saxonica.com/html/documentation/about/license/, чтобы увидеть и проверить, правильно ли вы выполняете PE или EE с помощью лицензия. См. Также http://saxonica.com/html/documentation/using-xsl/embedding/jaxp-transformation.html. Если у вас по-прежнему возникают проблемы, сообщите подробности о том, что вы сделали и какие сообщения об ошибках вы получите, желательно на Саксонском справочном форуме https://saxonica.plan.io/projects/saxon/boards или здесь с новым вопросом, помеченным как саксон , –

 Смежные вопросы

  • Нет связанных вопросов^_^