gpt4 book ai didi

java - XSLT-使用java动态创建元素

转载 作者:行者123 更新时间:2023-11-30 08:09:56 24 4
gpt4 key购买 nike

我有一个方法,应该创建 xsl:template 标记,然后将其附加到下面给出的 xml 文件中。

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:template”,并且会生成一个空的 xml。有人知道出了什么问题吗?

提前谢谢

最佳答案

也许您可以尝试使用 setPrefix、createElementNS 等设置模板元素的命名空间。当您通过 dom 添加元素时,它可能不知道您通过前缀表示的命名空间。

关于java - XSLT-使用java动态创建元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30517087/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com