如何从变换中排除具有xsi:nil =“true”的元素?
问题描述:
我有一些最近更改的XML文件,因此一些节点现在具有属性xsi:nil =“true”。我有一个XSLT样式表,它将XML呈现为HTML以便快速浏览数据。目前为了让自己更容易,我在应用样式表之前从XML中除去命名空间。直到我们上次更新,这工作得很好。现在我得到一个错误,因为XSL不知道如何处理xsl:nil =“true”。如何从变换中排除具有xsi:nil =“true”的元素?
我可以很容易地更新代码,所以我在对XML中的所有xsl:nil =“true”匹配项进行替换/去除之前,我想知道是否可以将XSLT样式表所以xsi:nil将被忽略/不会导致转换失败,即使XML中没有包含名称空间也是如此。我宁愿这样做,因为我现在可以在服务器上进行更改,如果必须发布新的Web构建,我必须跳过一些内部环节才能部署它。
后,我把事情的工作(通过消除了xsl:转型之前或期间为零的),我会围绕绕回来,并找出为什么我删除了原来的命名空间和修复。
感谢任何帮助,您可以给我。
答
你为什么要删除的命名空间摆在首位?使用XSLT可以控制哪些前缀不应放入输出中,并且可以在样式表中很好地跳过这些前缀xsi:nil
。
如果没有为xsi
前缀命名空间前缀声明,XML是无效的。因此,无论您是在处理无效的XML,还是在某处仍然有一些XSI名称空间声明,并且可以更改XSLT以跳过这些条目。
如果你做一个XML源的查找替换,真正做到后来修复它(即将!),因为这种东西是要打破你的脖子。