Hello all,
I try to use the document() function to include XML instances from a database. For passing character entities I need to use the startEntity() and endEntity() calls on the LexicalHandler. In the URIResolver I create a XMLReader and set this reader on the SAXSource, which I return to the processor. Code goes like that:
public Source resolve(String href, String base) throws TransformerException { SAXSource source = null; XMLReader sourcereader = null; PublishLexicalHandler lh = new PublishLexicalHandler();
try {
sourcereader = XMLReaderFactory.createXMLReader();
sourcereader.setFeature(VALIDATION, true);
sourcereader.setProperty("http://xml.org/sax/properties/lexical-handler", lh); // doesn't work for <xsl:for-each select="document(...)"/>
sourcereader.setErrorHandler(new PublishErrorHandler());
} catch (SAXNotRecognizedException nre) {
} catch (SAXNotSupportedException nse) {
} catch (SAXException e1) {
}
sourcereader.setEntityResolver(this);
source = new SAXSource(moduleResolver.resolveModule(new CMSParameters(href)));
source.setXMLReader(sourcereader);
return source;
}
The problem is, that the LexicalHandler ("lh") receives no calls, when I invoce the document() function in my XSLT templates. Curiously it works with <xsl:include ...>. I don't know if this is a bug/missing feature in Xalan or if I missunderstood something.
Please advice.
Christian Brandenstein
(Tested with xalan-2.5.2 and xalan-2.6.0)
-- christian brandenstein willy-lessing-str. 18 96047 bamberg phone: +49 (951) 2 08 59-83 fax: +49 (951) 2 08 59-77 email: mailto:[EMAIL PROTECTED] web: http://www.docufy.de
