XSLT:使用封闭标记传输xml

问题描述:

我正在使用XSLT将XML转换为其他格式的XML。如果元素有空的数据,它将显示为自动关闭,例如。 <data />,但我想输出它与像这样的结束标记<data></data>XSLT:使用封闭标记传输xml

如果我将输出方法从“xml”更改为“html”,那么我可以得到<data></data>,但我将丢失文档顶部的<?xml version="1.0" encoding="UTF-8"?>。这是做这件事的正确方法吗?

非常感谢。

陈道明

+2

你有这个理由吗? – 2010-01-07 16:43:55

+0

要求确保它们是封闭标签和有效的XML文件,如文档顶部的和。 – 2010-01-07 16:51:10

+0

不,问题是:是否有*理由*你想这样做? – Tomalak 2010-01-07 17:01:23

如果你想要这样做,因为你认为自闭标签很丑,那就克服它吧。

如果你想通过输出到一些不符合标准的XML解析器,在控制之下,然后用更好的解析器,或修复您正在使用的一个。

如果它超出了你的控制范围,并且你必须将它发送给XML解析器,那么你是否真的需要序言?如果没有,那么html输出方法是好的。

如果你确实需要的XML序言,那么你可以使用HTML输出方法,并在前面加上序言改造后,但它发送到不足解析器之前。

或者,您可以输出它,因为它与某种自定义序列发送到你的缺陷解析器使用DOM之前XML自动关闭的标签,和预处理。如果它不能处理自闭标签,那么我相信这不是解析XML失败的唯一方法。例如,您可能需要对命名空间进行一些操作。

您可以尝试向您输出的任何空白元素添加空文本节点。这可能会诀窍。

请,到这里看看:MSXML serialisation of empty elements

+0

这是一篇很好的文章。非常感谢你。 – 2010-01-08 11:53:33

自我封闭,明确关闭元素完全一样的东西以任何方面。

只有当你沿着加工链某处有是不支持XML(代码,做XML处理与正则表达式,例如)的工具,它可能会有所作为。在这一点上你应该考虑改变的一部分处理,而不是XML的生成/序列化部分。