Hello,
I just tried to build a custom extension for the fop.
So I did the element mapping:
-------------------------------->8--------------------------------------
package com.zf.swdoku.fop.fo.extensions.js;
import java.util.HashMap;
import java.util.Set;
import org.apache.fop.fo.ElementMapping;
import org.apache.fop.fo.FONode;
import org.apache.xmlgraphics.util.QName;
/**
* Element mapping for FOP's proprietary extension to XSL-FO.
*/
public class JSElementMapping extends ElementMapping {
/** The FOP extension namespace URI */
public static final String URI = "http://ns.zf.com/SWDoku/fop/ext/js";
/** The standard XML prefix for elements and attributes in this namespace.
*/
public static final String STANDARD_PREFIX = "js";
private static final Set<String> PROPERTY_ATTRIBUTES = new
java.util.HashSet<String>();
static {
// These are FOP's standard extension properties (js:*)
PROPERTY_ATTRIBUTES.add("lang");
}
/**
* Constructor.
*/
public JSElementMapping() {
namespaceURI = URI;
}
/**
* Initialize the data structures.
*/
@Override
protected void initialize() {
System.out.println("init JS");
if (foObjs == null) {
foObjs = new HashMap<String, Maker>();
// foObjs.put("script", new UnknownXMLObj.Maker(URI));
foObjs.put("script", new JSMaker());
}
}
static class JSMaker extends ElementMapping.Maker {
@Override
public FONode make(FONode parent) {
return new Script(parent);
}
}
/** {@inheritDoc} */
@Override
public String getStandardPrefix() {
return STANDARD_PREFIX;
}
/** {@inheritDoc} */
@Override
public boolean isAttributeProperty(QName attributeName) {
if (!URI.equals(attributeName.getNamespaceURI())) {
throw new IllegalArgumentException("The namespace URIs don't
match");
}
return PROPERTY_ATTRIBUTES.contains(attributeName.getLocalName());
}
}
--------------------------------8<--------------------------------------
But I didn't get it initialized, but why?
I used the FOP 1.1.
Thanks for your help.
Best regards
Markus