1.1.2.11. fejezet, Függőségek összehasonlítása XSLT és bash shell script-el
Beküldte pzoli - 2013, június 7 - 7:39du
A pom.xml-ben tárolt dependency tagok kiszűrését XSLT-vel a legegyszerűbb megoldani. A kiszűrt eredmények összehasonlítást pedig bash shell script-el lehet segíteni.
A pom.xml-t átalakító dependencies.xsl fájl:
<?xml version="1.0" encoding='utf-8'?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:t="http://maven.apache.org/POM/4.0.0" xmlns:html="http://www.w3.org/TR/REC-html40" version="1.0"> <xsl:template match="/"> <xsl:for-each select="t:project/t:dependencies/t:dependency"> <xsl:value-of select="t:groupId"/><xsl:text>	</xsl:text> <xsl:value-of select="t:artifactId"/><xsl:text> </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet>
Érdemes megfigyelni a xmlns:t névtér definiálását. Ha ezt elfelejtjük, az xsl névtért használná a transzformáció, és ez eredménytelen lenne. A transzformáció az xsltproc programmal végezhető Linuxon:
xsltproc dependencies.xsl pom.xml
Ha Java-val transzformáljuk, a következő kód segít:
public static String transformWithXSL(String[] args) { File xsltFile = new File(args[0]); //dependencies.xsl File xmlFile = new File(args[1]); //pom.xml javax.xml.transform.Source xmlSource = new javax.xml.transform.stream.StreamSource(xmlFile); javax.xml.transform.Source xsltSource = new javax.xml.transform.stream.StreamSource(xsltFile); StringWriter xsltResult = new StringWriter(); javax.xml.transform.Result result = new javax.xml.transform.stream.StreamResult(xsltResult); javax.xml.transform.TransformerFactory transFact = javax.xml.transform.TransformerFactory.newInstance(); javax.xml.transform.Transformer trans; try { trans = transFact.newTransformer(xsltSource); trans.transform(xmlSource, result); } catch (TransformerException e) { e.printStackTrace(); } return xsltResult.toString(); }
A sort paranccsal pedig érdemes betű sorrendbe tenni az eredményt, úgy könnyen összehasonlítható a lista.
- A hozzászóláshoz be kell jelentkezni