From 7c6f8f4ac8d59b15a42cc36b40330c552233bc88 Mon Sep 17 00:00:00 2001 From: Yegor Bugayenko Date: Wed, 21 Mar 2018 18:07:04 +0300 Subject: [PATCH] #333 xsl transform via Saxon JAR --- .rultor.yml | 1 + Rakefile | 13 +- validator/.gitignore | 1 - validator/pom.xml | 83 ------------ .../java/com.zerocracy.validator/App.java | 57 --------- .../XmlTransformed.java | 54 -------- .../com.zerocracy.validator/package-info.java | 25 ---- .../src/main/resources/META-INF/MANIFEST.MF | 0 .../javax.xml.transform.TransformerFactory | 1 - .../services/javax.xml.xpath.XPathFactory | 1 - .../validator/XmlTransformedTest.java | 53 -------- validator/src/test/resources/target.xml | 25 ---- validator/src/test/resources/templates.xsl | 115 ----------------- validator/src/test/resources/transform.xsl | 118 ------------------ xsl/pm/cost/equity.xsl | 2 +- 15 files changed, 12 insertions(+), 537 deletions(-) delete mode 100644 validator/.gitignore delete mode 100644 validator/pom.xml delete mode 100644 validator/src/main/java/com.zerocracy.validator/App.java delete mode 100644 validator/src/main/java/com.zerocracy.validator/XmlTransformed.java delete mode 100644 validator/src/main/java/com.zerocracy.validator/package-info.java delete mode 100644 validator/src/main/resources/META-INF/MANIFEST.MF delete mode 100644 validator/src/main/resources/META-INF/services/javax.xml.transform.TransformerFactory delete mode 100644 validator/src/main/resources/META-INF/services/javax.xml.xpath.XPathFactory delete mode 100644 validator/src/test/java/com/zerocracy/validator/XmlTransformedTest.java delete mode 100644 validator/src/test/resources/target.xml delete mode 100644 validator/src/test/resources/templates.xsl delete mode 100644 validator/src/test/resources/transform.xsl diff --git a/.rultor.yml b/.rultor.yml index be141346..191acf2f 100644 --- a/.rultor.yml +++ b/.rultor.yml @@ -2,6 +2,7 @@ install: | sudo apt-get update sudo gem install pdd sudo apt-get install -y pandoc + mvn dependency:get -DgroupId=net.sf.saxon -DartifactId=Saxon-HE -Dversion=9.8.0-8 release: script: |- [[ "${tag}" =~ ^[0-9]+(\.[0-9]+)*$ ]] || exit -1 diff --git a/Rakefile b/Rakefile index 96a9fa98..b9b93ba7 100644 --- a/Rakefile +++ b/Rakefile @@ -143,9 +143,11 @@ task :xsl do root = xml.xpath('/*').first raise "version and updated attributes are required <#{f}>" if root.attr('version').nil? || root.attr('updated').nil? - html = xslt.transform( - Nokogiri::XML(File.open(f)), - ['today', "'#{Time.now.iso8601}'"] + html = Nokogiri::XML( + xsl_transform( + f, p, + 'today' => "'#{Time.now.iso8601}'" + ) ) html.remove_namespaces! if html.xpath('/html/body/section').empty? @@ -331,3 +333,8 @@ task :copyright do --include 'Rakefile' \ ." end + +def xsl_transform(xml, xsl, params = {}) + saxon = '~/.m2/repository/net/sf/saxon/Saxon-HE/9.8.0-8/Saxon-HE-9.8.0-8.jar' + `java -jar #{saxon} -s:#{xml} -xsl:#{xsl}` +end diff --git a/validator/.gitignore b/validator/.gitignore deleted file mode 100644 index bff2d762..00000000 --- a/validator/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.iml diff --git a/validator/pom.xml b/validator/pom.xml deleted file mode 100644 index 25150176..00000000 --- a/validator/pom.xml +++ /dev/null @@ -1,83 +0,0 @@ - - - 4.0.0 - com.zerocracy - validator - 1.0-SNAPSHOT - xsl-validator - XSL stylesheet validator - https://github.com/zerocracy/datum - - - org.cactoos - cactoos - 0.29 - - - junit - junit - 4.12 - test - - - com.jcabi - jcabi-xml - 0.21.1 - - - net.sourceforge.saxon - saxon - 9.1.0.8 - runtime - - - net.sourceforge.saxon - saxon - 9.1.0.8 - dom - runtime - - - net.sourceforge.saxon - saxon - 9.1.0.8 - xpath - runtime - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - 1.8 - 1.8 - - - - - - - qulice - - - - com.qulice - qulice-maven-plugin - - - findbugs:.* - codenarc:**/* - duplicatefinder:.* - - file:${basedir}/LICENSE.txt - - - - - - - \ No newline at end of file diff --git a/validator/src/main/java/com.zerocracy.validator/App.java b/validator/src/main/java/com.zerocracy.validator/App.java deleted file mode 100644 index 7b2fc74c..00000000 --- a/validator/src/main/java/com.zerocracy.validator/App.java +++ /dev/null @@ -1,57 +0,0 @@ -/** - * Copyright (c) 2016-2018 Zerocracy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to read - * the Software only. Permissions is hereby NOT GRANTED to use, copy, modify, - * merge, publish, distribute, sublicense, and/or sell copies of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package com.zerocracy.validator; - -import java.util.List; -import org.cactoos.list.ListOf; - -/** - * App entry point. - * - * @author Kirill (g4s8.public@gmail.com) - * @version $Id$ - * @since 0.1 - * @todo #255:30min App is not implemented. It should parse command line - * arguments: one is XML path another is XSL path, apply this XSL to XML - * and print transformed XML to the output. - * @todo #255:30min App should be started in Rakefile for each XSL file in - * datum like in 'xsl' goal. Also it should be compiled before and tested - * in Rultor merge. - */ -public final class App implements Runnable { - /** - * App arguments. - */ - private final List args; - - /** - * Ctor. - * @param arguments App arguments - */ - private App(final List arguments) { - this.args = arguments; - } - - @Override - public void run() { - throw new UnsupportedOperationException("#run()"); - } - - public static void main(String[] args) { - new App(new ListOf<>(args)).run(); - } -} diff --git a/validator/src/main/java/com.zerocracy.validator/XmlTransformed.java b/validator/src/main/java/com.zerocracy.validator/XmlTransformed.java deleted file mode 100644 index 7ea8d608..00000000 --- a/validator/src/main/java/com.zerocracy.validator/XmlTransformed.java +++ /dev/null @@ -1,54 +0,0 @@ -/** - * Copyright (c) 2016-2018 Zerocracy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to read - * the Software only. Permissions is hereby NOT GRANTED to use, copy, modify, - * merge, publish, distribute, sublicense, and/or sell copies of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package com.zerocracy.validator; - -import com.jcabi.xml.XML; -import com.jcabi.xml.XSL; -import org.cactoos.Scalar; - -/** - * Validated XML input. - * - * @author Kirill (g4s8.public@gmail.com) - * @version $Id$ - * @since 0.1 - */ -public final class XmlTransformed implements Scalar { - /** - * Source XML. - */ - private final XML xml; - /** - * Transformation XSL. - */ - private final XSL xsl; - - /** - * Ctor. - * @param source Source XML - * @param transformation Transformation XSL - */ - public XmlTransformed(final XML source, final XSL transformation) { - this.xml = source; - this.xsl = transformation; - } - - @Override - public XML value() throws Exception { - return this.xsl.transform(this.xml); - } -} diff --git a/validator/src/main/java/com.zerocracy.validator/package-info.java b/validator/src/main/java/com.zerocracy.validator/package-info.java deleted file mode 100644 index 5790f793..00000000 --- a/validator/src/main/java/com.zerocracy.validator/package-info.java +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright (c) 2016-2018 Zerocracy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to read - * the Software only. Permissions is hereby NOT GRANTED to use, copy, modify, - * merge, publish, distribute, sublicense, and/or sell copies of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -/** - * This app can validate XSL transformations with Saxon library. - * - * @author Kirill (g4s8.public@gmail.com) - * @version $Id$ - * @since 0.1 - */ -package com.zerocracy.validator; \ No newline at end of file diff --git a/validator/src/main/resources/META-INF/MANIFEST.MF b/validator/src/main/resources/META-INF/MANIFEST.MF deleted file mode 100644 index e69de29b..00000000 diff --git a/validator/src/main/resources/META-INF/services/javax.xml.transform.TransformerFactory b/validator/src/main/resources/META-INF/services/javax.xml.transform.TransformerFactory deleted file mode 100644 index 776bb11f..00000000 --- a/validator/src/main/resources/META-INF/services/javax.xml.transform.TransformerFactory +++ /dev/null @@ -1 +0,0 @@ -net.sf.saxon.TransformerFactoryImpl diff --git a/validator/src/main/resources/META-INF/services/javax.xml.xpath.XPathFactory b/validator/src/main/resources/META-INF/services/javax.xml.xpath.XPathFactory deleted file mode 100644 index fb0019fa..00000000 --- a/validator/src/main/resources/META-INF/services/javax.xml.xpath.XPathFactory +++ /dev/null @@ -1 +0,0 @@ -net.sf.saxon.xpath.XPathFactoryImpl diff --git a/validator/src/test/java/com/zerocracy/validator/XmlTransformedTest.java b/validator/src/test/java/com/zerocracy/validator/XmlTransformedTest.java deleted file mode 100644 index ea235607..00000000 --- a/validator/src/test/java/com/zerocracy/validator/XmlTransformedTest.java +++ /dev/null @@ -1,53 +0,0 @@ -/** - * Copyright (c) 2016-2018 Zerocracy - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to read - * the Software only. Permissions is hereby NOT GRANTED to use, copy, modify, - * merge, publish, distribute, sublicense, and/or sell copies of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -package com.zerocracy.validator; - -import com.jcabi.xml.ClasspathSources; -import com.jcabi.xml.XMLDocument; -import com.jcabi.xml.XSLDocument; -import java.io.InputStream; -import org.cactoos.io.ResourceOf; -import org.cactoos.text.TextOf; -import org.hamcrest.CoreMatchers; -import org.hamcrest.MatcherAssert; -import org.junit.Test; - -/** - * Test case for {@link XmlTransformed}. - * - * @author Kirill (g4s8.public@gmail.com) - * @version $Id$ - * @since 0.1 - * @checkstyle JavadocMethodCheck (500 lines) - */ -public final class XmlTransformedTest { - @Test - public void transformXmlWithXsl() throws Exception { - try ( - final InputStream xml = new ResourceOf("target.xml").stream(); - final InputStream xsl = new ResourceOf("transform.xsl").stream() - ) { - MatcherAssert.assertThat( - new XmlTransformed( - new XMLDocument(xml), - new XSLDocument(new TextOf(xsl).asString(), new ClasspathSources()) - ).value().node().getFirstChild().getNodeName(), - CoreMatchers.equalTo("html") - ); - } - } -} diff --git a/validator/src/test/resources/target.xml b/validator/src/test/resources/target.xml deleted file mode 100644 index 3c783d3b..00000000 --- a/validator/src/test/resources/target.xml +++ /dev/null @@ -1,25 +0,0 @@ - - - - $4000000 - 1000000 - - 500000 - 100 - - diff --git a/validator/src/test/resources/templates.xsl b/validator/src/test/resources/templates.xsl deleted file mode 100644 index dc36e1a3..00000000 --- a/validator/src/test/resources/templates.xsl +++ /dev/null @@ -1,115 +0,0 @@ - - - - - - - - - - - - - # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - mins - - - - hours - - - - days - - - - months - - - - years - - - ago - - - - - - - - @ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/validator/src/test/resources/transform.xsl b/validator/src/test/resources/transform.xsl deleted file mode 100644 index 71cdc417..00000000 --- a/validator/src/test/resources/transform.xsl +++ /dev/null @@ -1,118 +0,0 @@ - - - - - - - -
-

- Equity -

- -
- - -
- -

- Capitalization: - - - - - - - - - , total shares: - - - - - - - - - . -

- - - -
- -

- There are no owners yet, see - - §37 - - . -

-
- -

- Full list of owners: -

- - - - - - - - - - - - - - -
- User - - Stocks - - Share - - Value -
-
- - - - - - - - - - - - - % - - - - - $ - - - - - -
diff --git a/xsl/pm/cost/equity.xsl b/xsl/pm/cost/equity.xsl index f0e91c09..ecdf8434 100644 --- a/xsl/pm/cost/equity.xsl +++ b/xsl/pm/cost/equity.xsl @@ -107,7 +107,7 @@ SOFTWARE. % - + $