0

我有一些最近更改的 XML 文件,因此一些节点现在具有属性 xsi:nil="true"。我有一个 XSLT 样式表,可以将 XML 呈现为 HTML,以便快速查看数据。目前,为了让我自己更轻松,我在应用样式表之前从 XML 中删除了名称空间。直到我们上次更新为止,这一切都很好。现在我收到一个错误,因为 XSL 不知道如何处理 xsl:nil="true"。

我可以轻松地更新代码,因此在转换 XML 之前,我对 XML 中的所有 xsl:nil="true" 匹配项进行替换/删除,但我想知道是否可以将 XSLT 样式表合并为 xsi:即使 XML 中没有包含命名空间,nil 也将被忽略/不会导致转换失败。我更喜欢这样做,因为我现在可以在服务器上进行更改,如果我必须发布一个新的 Web 构建,我必须跳过一些内部箍来部署它。

在我让事情正常工作之后(通过在转换之前或期间删除 xsl:nil),我会回过头来找出我最初删除命名空间的原因并修复它。

感谢你给与我的帮助。

4

1 回答 1

2

你为什么首先删除命名空间?XSLT 允许您控制不应将哪些前缀放入输出中,并且您可以xsi:nil在样式表中很好地跳过这些前缀。

如果前缀没有命名空间前缀声明xsi,则 XML 无效。因此,要么您正在处理无效的 XML,要么您在某处仍有一些 XSI 名称空间声明,您可以更改 XSLT 以跳过这些条目。

如果您在 XML 源代码上进行查找替换,请务必稍后(很快!)修复它,因为这种东西会伤到您的脖子。

于 2010-02-01T19:36:14.470 回答