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





Reply via email to