Я пытаюсь создать HTML-файлы с помощью XSLT, я использовал файлы xml и xsl для создания HTML-файла. Здесь некоторые другие файлы xsl, которые находятся в одном месте, включены в файл xsl, используя <xsl:include href="temp.xsl"/>
.Ошибка при загрузке XSL-файлов и DTD-файлов при преобразовании XSLT
Здесь файлы Xsl находятся в пути "D:/XSL_Folder /". Я запускаю файл Main.java, который находится в D:/Workspace/Webapp_Project/path.
Когда я пытаюсь создать файлы HTML с помощью передачи файлов «D: /XSL_Folder/root.xsl» и «D: /XML_Folder/data.xml» в Main.java в качестве аргументов, я получаю следующую ошибку при создании Шаблоны.
Templates lTemplates = TransformerFactory.newInstance().newTemplates(new StreamSource(new FileInputStream(lFileXSL)));
ERROR: 'D:\Workspace\Webapp_Project\temp.xsl (The system cannot find the file specified)'
FATAL ERROR: 'Could not compile stylesheet'
12:20:07 ERROR f.s.t.v.v2.dao.impl.DocUnitDaoImpl - Error while creating a new XslTransformerGetter. The path to the XSL may be wrong. javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:885) ~[na:1.7.0_13]
В отчете об ошибке, мы можем видеть, что синтаксический анализатор проверяет включаемый файл XSL в пути проекта (D: \ Workspace \ Webapp_Project), а не в пути, где файл root.xsl находится (D:/XSL_Folder /).
Может кто подскажет мне, почему парсер ищет файл xsl в папке проекта в пути, где находится файл root.xsl, и как исправить эту проблему?
кода я использую для создания HTML-файла с помощью XSL и XML-файл:
public static void simpleTransform(InputStream lXmlFileStream, File lXSLFile,
StreamResult lHtmlResult, Map<String, String> lArguments) {
TransformerFactory tFactory = TransformerFactory.newInstance();
try {
Transformer transformer =
tFactory.newTransformer(new StreamSource(lXSLFile));
for (Entry<String, String> lEntrie : lArguments.entrySet()) {
transformer.setParameter(lEntrie.getKey(), lEntrie.getValue());
}
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.transform(new StreamSource(lXmlFileStream), lHtmlResult);
}
catch (Exception e) {
e.printStackTrace();
}
}
Еще одно замечание - ваше сообщение об ошибке ищет файл temp.xsl вместо файла root.xsl. Есть ли какой-либо другой параметр или жестко закодированная информация? –
@Navin Rawat temp.xsl файл включен в файл root.xsl с помощью « ". Файлы root.xsl и temp.xsl расположены на одном пути (D:/XSL_Folder /). Я передаю root.xsl в xslt для translataion, но parser ищет файл temp.xsl в другом пути (то есть ERROR: 'D: \ Workspace \ Webapp_Project \ temp.xsl (система не может найти указанный файл)'). –
Убедитесь, что оба файла находятся на одном пути. Это единственный файл, который вы включили в основной файл XSLT? Какую версию XSLT вы используете? –