gpt4 book ai didi

java - 使用java的xsl多输出

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:40 24 4
gpt4 key购买 nike

我想编写一个xsl文档来根据xml在.html中生成多于1​​个输出

XML:

<?xml version="1.0" encoding="UTF-8"?>

<book>
<title>Libro</title>
<chapter>
<title>Chapter 1</title>
<content></content>
</chapter>
<chapter>
<title>Chapter 2</title>
<content></content>
</chapter>
</book>

我想为 xml 中的每个“章节”获取一个 html,在这种情况下,结果必须是 2 个 html 文档

xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:saxon="http://saxon.sf.net/" extension-element-prefixes="saxon"
version="1.1">

<xsl:output method="html" indent="yes"/>

<xsl:template match="./book/">
<xsl:for-each select="./chapter">
<xsl:variable name="filename" select="concat(title,'.html')"/>
<xsl:document href="{$filename}">
<html>
<head>
<title>
<xsl:value-of select="title" />
</title>
</head>
<body>
<xsl:value-of select="body" />
</body>
</html>
</xsl:document>
</xsl:for-each>
</xsl:template>

</xsl:stylesheet>

java代码:

DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(input);
// Use a Transformer for output
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource(xslt));

DOMSource source = new DOMSource(document);
StreamResult result = new StreamResult(System.out);
transformer.transform(source, result);

我有一些问题

1.- 我运行了该程序,但出现了此错误:

java.lang.RuntimeException: Elemento 'http://www.w3.org/1999/XSL/Transform:document ' de XSL no soportado

我不知道为什么,我已在 xsl:stylesheet 中添加了路径,但似乎无法正确工作

我应该改变吗?

2.- 将 saxon 库添加到我的 java 项目后,出现此错误:

元素上不允许使用属性 @href

如何解决这个问题?

最佳答案

我发现两个问题:

  1. 在 XSL 文件中,您应该使用 xsl:result-document 而不是 xsl:document

  2. 当您在 Transformer 对象上调用转换时,结果应该是一个空文档:transformer.transform(source, new DOMResult());

关于java - 使用java的xsl多输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27351242/

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