У меня есть метод, который должен создать, а затем добавить тег xsl: template в xml-файл, указанный ниже.XSLT-Создание элементов динамически с помощью java
Java:
...
tF = TransformerFactory.newInstance();
DocumentBuilderFactory fact = DocumentBuilderFactory.newInstance();
fact.setNamespaceAware(true);
DocumentBuilder builder2 = fact.newDocumentBuilder();
id = builder2.parse(ctx.getRealPath("/WEB-INF/identity.xsl"));
...
attributes_only(id);
StreamSource xmlSource = new StreamSource(ctx.getResourceAsStream("/WEB-INF/input.xml"));
response.setContentType("text/html");
DOMSource ds_id = new DOMSource(id);
Transformer mine = tF.newTransformer(ds_id);
DOMResult output = new DOMResult();
mine.transform(xmlSource, output);
...
private void attributes_only(Document d) {
Element root = d.getDocumentElement();
Element e = d.createElement("xsl:template");
e.setAttribute("match","a|b|c");
root.appendChild(e);
}
...
XML:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<!-- This is what I want to achieve
<xsl:template match="a|b|c">
</xsl:template>
-->
</xsl:stylesheet>
Я использую org.w3c.dom и все работает отлично для этого метода, за исключением. Сообщение об ошибке (от tomcat) похоже на «xsl: шаблон не разрешен в этой позиции в таблице стилей» и создается пустой xml. Кто-нибудь имеет представление о том, что не так?
Спасибо заранее
Почему вы преобразовываете таблицу стилей с использованием Java и DOM, а не используете XSLT? –