in java/src/org/apache/qetest/trax/EmbeddedStylesheetTest.java [195:340]
public boolean testCase1()
{
reporter.testCaseInit("Simple xml documents with xml-stylesheet PI's");
TransformerFactory factory = null;
try
{
factory = TransformerFactory.newInstance();
}
catch (Throwable t)
{
reporter.checkFail("Problem creating factory; can't continue testcase");
reporter.logThrowable(reporter.ERRORMSG, t,
"Problem creating factory; can't continue testcase");
return true;
}
String media= null; // often ignored
String title = null; // often ignored
String charset = null; // often ignored
try
{
// Verify you can process a simple embedded stylesheet
// (also tested in TransformerFactoryAPITest)
Source stylesheet = factory.getAssociatedStylesheet(new StreamSource(QetestUtils.filenameToURL(embeddedFileInfo.xmlName)),
media, title, charset);
reporter.logTraceMsg("got AssociatedStylesheet");
Templates embedTemplates = factory.newTemplates(stylesheet);
Transformer embedTransformer = embedTemplates.newTransformer();
reporter.logTraceMsg("Got embedded templates, about to transform.");
embedTransformer.transform(new StreamSource(QetestUtils.filenameToURL(embeddedFileInfo.xmlName)),
new StreamResult(outNames.nextName()));
int result = fileChecker.check(reporter,
new File(outNames.currentName()),
new File(embeddedFileInfo.goldName),
"(1)embedded transform into " + outNames.currentName());
if (result == Logger.FAIL_RESULT)
reporter.logInfoMsg("(1)embedded transform failure reason:" + fileChecker.getExtendedInfo());
// Verify the stylesheet you get from an embedded source
// can be reused for other documents
embedTransformer = embedTemplates.newTransformer();
embedTransformer.transform(new StreamSource(QetestUtils.filenameToURL(embeddedFileInfo.xmlName)),
new StreamResult(outNames.nextName()));
result = fileChecker.check(reporter,
new File(outNames.currentName()),
new File(embeddedFileInfo.goldName),
"(1a)embedded transform into " + outNames.currentName());
if (result == Logger.FAIL_RESULT)
reporter.logInfoMsg("(1a)embedded transform failure reason:" + fileChecker.getExtendedInfo());
// Verify the transformer itself can be reused
// on a *different* document
embedTransformer.transform(new StreamSource(QetestUtils.filenameToURL(systemIdFileInfo.xmlName)),
new StreamResult(outNames.nextName()));
result = fileChecker.check(reporter,
new File(outNames.currentName()),
new File(systemIdFileInfo.goldName),
"(2)embedded transform into " + outNames.currentName());
if (result == Logger.FAIL_RESULT)
reporter.logInfoMsg("(2)embedded transform failure reason:" + fileChecker.getExtendedInfo());
}
catch (Throwable t)
{
reporter.checkFail("Problem with simple embedded reuse");
reporter.logThrowable(reporter.ERRORMSG, t, "Problem with simple embedded reuse");
}
try
{
// Verify you can process an embedded stylesheet as fragment
testEmbeddedTransform(new StreamSource(QetestUtils.filenameToURL(embeddedFragmentFileInfo.xmlName)),
new StreamSource(QetestUtils.filenameToURL(embeddedFragmentFileInfo.xmlName)),
"(10)embedded fragment transform",
embeddedFragmentFileInfo.goldName);
// Verify you can process an embedded stylesheet that
// comes from a relative path - default systemId
testEmbeddedTransform(new StreamSource(QetestUtils.filenameToURL(embeddedRelativeXmlName)),
new StreamSource(QetestUtils.filenameToURL(embeddedRelativeXmlName)),
"(11)embedded relative transform",
relativeGoldFileLevel1);
// ...Verify relative paths, explicit systemId up one level0
// sysId for level0 up one: inputDir + File.separator + "EmbeddedRelative.xml"
Source relativeXmlSrc = new StreamSource(new FileInputStream(embeddedRelativeXmlName));
relativeXmlSrc.setSystemId(QetestUtils.filenameToURL(inputDir + File.separator + "EmbeddedRelative.xml"));
Source relativeTransformSrc = new StreamSource(new FileInputStream(embeddedRelativeXmlName));
relativeTransformSrc.setSystemId(QetestUtils.filenameToURL(inputDir + File.separator + "EmbeddedRelative.xml"));
testEmbeddedTransform(relativeXmlSrc,
relativeTransformSrc,
"(12a)embedded relative, explicit sysId up level0",
relativeGoldFileLevel0);
// ...Verify relative paths, explicit systemId same level1
relativeXmlSrc = new StreamSource(new FileInputStream(embeddedRelativeXmlName));
relativeXmlSrc.setSystemId(QetestUtils.filenameToURL(embeddedRelativeXmlName));
relativeTransformSrc = new StreamSource(new FileInputStream(embeddedRelativeXmlName));
relativeTransformSrc.setSystemId(QetestUtils.filenameToURL(embeddedRelativeXmlName));
testEmbeddedTransform(relativeXmlSrc,
relativeTransformSrc,
"(12b)embedded relative, explicit sysId same level1",
relativeGoldFileLevel1);
// ...Verify relative paths, explicit systemId down one level2
// sysId for level2 down one: inputDir + "/trax/systemid/" + "EmbeddedRelative.xml"
relativeXmlSrc = new StreamSource(new FileInputStream(embeddedRelativeXmlName));
relativeXmlSrc.setSystemId(QetestUtils.filenameToURL(inputDir + "/trax/systemid/" + "EmbeddedRelative.xml"));
relativeTransformSrc = new StreamSource(new FileInputStream(embeddedRelativeXmlName));
relativeTransformSrc.setSystemId(QetestUtils.filenameToURL(inputDir + "/trax/systemid/" + "EmbeddedRelative.xml"));
testEmbeddedTransform(relativeXmlSrc,
relativeTransformSrc,
"(12c)embedded relative, explicit sysId down level2",
relativeGoldFileLevel2);
// Verify you can process various types of embedded stylesheets
// This also verifies that a type of 'not/found' is skipped
// Xalan-specific: text/xsl
testEmbeddedTransform(new StreamSource(QetestUtils.filenameToURL(typeNameTextXsl)),
new StreamSource(QetestUtils.filenameToURL(typeNameTextXsl)),
"(20a)xml:stylesheet type=text/xsl",
typeGoldName);
// Proposed standard: text/xml
testEmbeddedTransform(new StreamSource(QetestUtils.filenameToURL(typeNameTextXml)),
new StreamSource(QetestUtils.filenameToURL(typeNameTextXml)),
"(20b)xml:stylesheet type=text/xml",
typeGoldName);
// Proposed standard: application/xml+xslt
testEmbeddedTransform(new StreamSource(QetestUtils.filenameToURL(typeNameApplicationXmlXslt)),
new StreamSource(QetestUtils.filenameToURL(typeNameApplicationXmlXslt)),
"(20b)xml:stylesheet type=application/xml+xslt",
typeGoldName);
}
catch (Throwable t)
{
reporter.checkFail("Problem with other embedded");
reporter.logThrowable(reporter.ERRORMSG, t, "Problem with other embedded");
}
reporter.testCaseClose();
return true;
}