gpt4 book ai didi

java - XSL 转换的异常输出

转载 作者:行者123 更新时间:2023-11-29 03:44:00 27 4
gpt4 key购买 nike

我有一个 xml 文档和一个样式表,可以将文档转换为另一个有用的 xml。作为引用,xml 文档有点像这样:

<root>
<element1>value1</element1>
<element2>value2</element2>
<element3>value3</element3>
<element4>..some more levels of data</element4>
</root>

样式表看起来像这样:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:include href="errorResponse.xsl"/>
<xsl:template match="root/element4">
<xsl:element name="myRoot">
<xsl:element name="myElement">
<xsl:apply-templates select="./someElement/someOtherElement"/>
</xsl:element>
</xsl:element>
</xsl:template>

我得到的输出 xml 字符串是这样的:

<?xml version="1.0" encoding="ISO-8859-1"?>
value1
value2
value3
<myRoot><myelement> some data </myElemrnt></myroot>

我用于转换的代码片段是这样的:

InputStream styleSheet = new FileUtil().getFileStream("xsltFileName");
StreamSource xslStream = new StreamSource(styleSheet);

DOMSource in = new DOMSource(inputXMLDoc);
ByteArrayOutputStream baos = new ByteArrayOutputStream();

TransformerFactory transFact = TransformerFactory.newInstance();
transFact.setURIResolver(new XsltURIResolver());
Transformer trans = transFact.newTransformer(xslStream);
trans.transform(in, new StreamResult(baos));
System.out.println(baos.toString()); // displays the above output

但是输出格式不理想。我不想要值 1、值 2、值 3。这也为要处理的新生成的 XML 带来了进一步的问题。

我看到很多关于转换的问题。这困扰了我很长时间。如果有人能指出我哪里出错了,将不胜感激。

同时指出我在整个过程中是否遵循了任何不正确的约定。

感谢和问候。

最佳答案

由于 Default Template Rule,您得到了该输出,输出文本节点。如果您不想要这些节点,则需要通过匹配它们并将它们替换为任何内容(即空模板)来明确排除它们。

尝试将此模板添加到您的样式表中:

<xsl:template match="/">
<xsl:apply-templates select="root/element4"/>
</xsl:template>

它匹配根并丢弃除 root/element4 之外的所有内容。

关于java - XSL 转换的异常输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11834915/

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