【发布时间】:2013-09-09 14:07:40
【问题描述】:
我有来自 SQLServer 的 XML。我无法让 SQLServer 让我有条件地更改节点的名称,所以我稍后使用 XSLT 进行。我真的不知道我在用 XSLT 做什么——我根据在 StackOverFlow 上搜索到的东西拼凑了我的解决方案。我遇到的问题是输入中没有子级的标签(因此只有一个标签)在转换后扩展为具有开始和结束标签。我想防止这种情况发生,因为我们有足够的用户,带宽是一个问题。
输入是:
XSLT 是
...输出为:
注意每个问题标签现在是如何“分解”的。在真正的 XML 中,比我在这里展示的要多得多。
在将这个问题放在一起时,我注意到的一件事是,转换还向转换后的 XML 添加了 UTF-16 编码。如果有人对如何解决这个问题有任何想法,也欢迎:)。
更新
我正在将 XML 和 XSL 加载到 ASP Classic 中的 MSXML2.DOMDocument.3.0 中并使用 transformNode。我已经设法通过在结果字符串上使用 Replace 来修复 UTF 编码,但我对解决方案并不满意。
【问题讨论】:
-
我猜这两个问题都不是来自您编写的 XSLT,而是来自 XSLT 处理器本身。请指定您正在使用的处理器以及所涉及的所有参数。
-
编辑地址评论
-
我可以支持哈维尔的回复。这很可能是由您的处理器引起的。我使用 Xalan 运行了提供的转换,但我没有看到 XML 被“爆炸”或 UTF-16 问题。
-
另外,您可以通过
encoding="UTF-8"或其他方式在输出标签中设置您的编码。但这只能解决其中一个问题。
标签: xml xslt asp-classic domdocument