From 72824e259e97715628a35baceb3de0420438a5fc Mon Sep 17 00:00:00 2001 From: Norman Walsh Date: Sun, 6 Sep 2015 07:01:29 +0100 Subject: [PATCH] Update CSS processor interface to allow stylesheet URIs --- src/main/java/com/xmlcalabash/config/CssProcessor.java | 1 + .../java/com/xmlcalabash/extensions/CssFormatter.java | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/xmlcalabash/config/CssProcessor.java b/src/main/java/com/xmlcalabash/config/CssProcessor.java index e6eb69b7..c6b679ee 100644 --- a/src/main/java/com/xmlcalabash/config/CssProcessor.java +++ b/src/main/java/com/xmlcalabash/config/CssProcessor.java @@ -17,5 +17,6 @@ public interface CssProcessor { public void initialize(XProcRuntime runtime, XStep step, Properties options); public void addStylesheet(XdmNode doc); + public void addStylesheet(String uri); public void format(XdmNode doc, OutputStream out, String contentType); } diff --git a/src/main/java/com/xmlcalabash/extensions/CssFormatter.java b/src/main/java/com/xmlcalabash/extensions/CssFormatter.java index 222e8f87..d44875d9 100644 --- a/src/main/java/com/xmlcalabash/extensions/CssFormatter.java +++ b/src/main/java/com/xmlcalabash/extensions/CssFormatter.java @@ -39,6 +39,7 @@ public class CssFormatter extends DefaultStep { private static final QName _href = new QName("","href"); + private static final QName _css = new QName("","css"); private static final QName _content_type = new QName("","content-type"); private ReadablePipe source = null; private ReadablePipe css = null; @@ -90,7 +91,7 @@ public void run() throws SaxonApiException { throw new XProcException(step.getNode(), "Failed to instantiate CSS provider"); } - while (css.moreDocuments()) { + while (css != null && css.moreDocuments()) { XdmNode style = css.read(); provider.addStylesheet(style); } @@ -102,6 +103,13 @@ public void run() throws SaxonApiException { contentType = "application/pdf"; } + if (getOption(_css) != null) { + String s = getOption(_css).getString(); + for (String css : s.split("\\s+")) { + provider.addStylesheet(css); + } + } + String href = getOption(_href).getString(); String base = getOption(_href).getBaseURI().toASCIIString();