ka3*_*3ak 2 html java tags xslt
我有时会做 XSLT。所以我可能有些不明白。
不确定是否需要示例,但这里是: XML 非常简单:
<a></a>
Run Code Online (Sandbox Code Playgroud)
XSL:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html"/>
<xsl:template match="/">
<xsl:apply-templates select="a"/>
</xsl:template>
<xsl:template match="a">
<html>
<head>
<title>Title</title>
</head>
<body><br></body>
</html>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
Java代码:
public static String transform(String xml, String xsl) throws TransformerException {
StreamSource xslT = new StreamSource(new StringReader(xsl));
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(xslT);
StreamSource source = new StreamSource(new StringReader(xml));
StringWriter out = new StringWriter();
StreamResult result = new StreamResult(out);
transformer.transform(source, result);
return out.toString();
}
Run Code Online (Sandbox Code Playgroud)
我认为如果我html
在样式表中使用输出类型,那么它应该被识别<br>
为有效的 html 标签。
一般来说...为什么它关心 html 有效性呢?我还注意到,如果我声明一个变量。例如:
<xsl:variable name="someTable">
<table class="common" bgcolor="#DDDDDD">
</xsl:variable>
Run Code Online (Sandbox Code Playgroud)
会报同样的错误。
我的目标不是创建无效的 html。我只想声明一个变量(我将<table>
根据稍后某处的处理逻辑关闭)。
有没有办法解决这个问题,或者我必须使用它text
作为输出类型。
如果输出方法是html
,则处理器将输出<br/>
为<br>
。但是,输入和样式表都必须是格式正确的XML文档。
至于您关于变量的问题:您不能 在变量中仅存储开始标签。您必须存储整个元素(此时仅作为抽象存在,并且没有标签)。
如果您发现自己“需要”存储一个开始标签,您将“根据稍后某处的处理逻辑关闭它”,那么您需要重新考虑您的方法。这不是找到解决方法的问题;而是问题。XSLT 并不是这样工作的。