in java/src/org/apache/qetest/xalanj2/SmoketestOuttakes.java [647:754]
public boolean testCase6()
{
reporter.testCaseInit("Build a stylesheet DOM programmatically and use it");
XSLTestfileInfo testFileInfo = new XSLTestfileInfo();
testFileInfo.inputName = inputDir + File.separator + "trax" + File.separator + "identity.xsl";
testFileInfo.xmlName = inputDir + File.separator + "trax" + File.separator + "identity.xml";
testFileInfo.goldName = goldDir + File.separator + "trax" + File.separator + "identity.out";
try
{
// Startup a factory and docbuilder, create some nodes/DOMs
DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
dfactory.setNamespaceAware(true);
DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
reporter.logTraceMsg("parsing xml file");
Document xmlDoc = docBuilder.parse(new InputSource(testFileInfo.xmlName));
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = null;
// Programmatically build the XSL file into a Document and transform
Document xslBuiltDoc = docBuilder.newDocument();
appendIdentityDOMXSL(xslBuiltDoc, xslBuiltDoc, true);
// For debugging, write the generated stylesheet out
// Note this will not textually exactly match the identity.xsl file
reporter.logInfoMsg("Writing out xslBuiltDoc to "+ outNames.nextName());
transformer = factory.newTransformer();
transformer.transform(new DOMSource(xslBuiltDoc), new StreamResult(outNames.currentName()));
reporter.logInfoMsg("About to newTransformer(xslBuiltDoc)");
transformer = factory.newTransformer(new DOMSource(xslBuiltDoc));
reporter.logInfoMsg("About to transform(xmlDoc, StreamResult(" + outNames.nextName() + "))");
transformer.transform(new DOMSource(xmlDoc), new StreamResult(outNames.currentName()));
fileChecker.check(reporter,
new File(outNames.currentName()),
new File(testFileInfo.goldName),
"transform(xslBuiltDoc,...) into " + outNames.currentName());
// Programmatically build the XSL file into a DocFrag and transform
xslBuiltDoc = docBuilder.newDocument();
DocumentFragment xslBuiltDocFrag = xslBuiltDoc.createDocumentFragment();
appendIdentityDOMXSL(xslBuiltDocFrag, xslBuiltDoc, true);
// For debugging, write the generated stylesheet out
reporter.logInfoMsg("Writing out xslBuiltDocFrag to "+ outNames.nextName());
transformer = factory.newTransformer();
transformer.transform(new DOMSource(xslBuiltDocFrag), new StreamResult(outNames.currentName()));
reporter.logCriticalMsg("//@todo Verify that this is even a valid operation!");
reporter.logInfoMsg("About to newTransformer(xslBuiltDocFrag)");
reporter.logCriticalMsg("Bugzilla#5133: will throw NPE");
transformer = factory.newTransformer(new DOMSource(xslBuiltDocFrag));
reporter.logInfoMsg("About to transform(xmlDoc, StreamResult(" + outNames.nextName() + "))");
transformer.transform(new DOMSource(xmlDoc), new StreamResult(outNames.currentName()));
fileChecker.check(reporter,
new File(outNames.currentName()),
new File(testFileInfo.goldName),
"transform(xslBuiltDocFrag,...) into " + outNames.currentName());
}
catch (Throwable t)
{
reporter.checkFail("Problem with various XSL1 elems/documents");
reporter.logThrowable(reporter.ERRORMSG, t, "Problem with various XSL1 elems/documents");
}
try
{
// Startup a factory and docbuilder, create some nodes/DOMs
DocumentBuilderFactory dfactory = DocumentBuilderFactory.newInstance();
dfactory.setNamespaceAware(true);
DocumentBuilder docBuilder = dfactory.newDocumentBuilder();
reporter.logTraceMsg("parsing xml file");
Document xmlDoc = docBuilder.parse(new InputSource(testFileInfo.xmlName));
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = null;
// Programmatically build the XSL file into an Element and transform
Document xslBuiltDoc = docBuilder.newDocument();
// Note: Here, we implicitly already have the outer list
// element, so ensure the worker method doesn't add again
reporter.logCriticalMsg("Bugzilla#5133: will throw DOM003 exception");
Element xslBuiltElem = xslBuiltDoc.createElementNS(xslNamespace, "xsl:stylesheet");
xslBuiltElem.setAttributeNS(null, "version", "1.0");
appendIdentityDOMXSL(xslBuiltElem, xslBuiltDoc, false);
// For debugging, write the generated stylesheet out
reporter.logInfoMsg("Writing out xslBuiltElem to "+ outNames.nextName());
transformer = factory.newTransformer();
transformer.transform(new DOMSource(xslBuiltElem), new StreamResult(outNames.currentName()));
reporter.logCriticalMsg("//@todo Verify that this is even a valid operation!");
reporter.logInfoMsg("About to newTransformer(xslBuiltElem)");
transformer = factory.newTransformer(new DOMSource(xslBuiltElem));
reporter.logInfoMsg("About to transform(xmlDoc, StreamResult(" + outNames.nextName() + "))");
transformer.transform(new DOMSource(xmlDoc), new StreamResult(outNames.currentName()));
fileChecker.check(reporter,
new File(outNames.currentName()),
new File(testFileInfo.goldName),
"transform(xslBuiltElem,...) into " + outNames.currentName());
}
catch (Throwable t)
{
reporter.checkFail("Problem with various XSL2 elems/documents");
reporter.logThrowable(reporter.ERRORMSG, t, "Problem with various XSL2 elems/documents");
}
reporter.testCaseClose();
return true;
}