我需要对此做什么:
<xsl:template match="xs:simpleType">
<xsl:copy>
<xsl:copy-of select="node()[not(self::xs:annotation or self::xs:restriction)]|@*"/>
</xsl:copy>
</xsl:template>目前,事实证明:
<xs:simpleType xmlns:core="urn:org:pesc:core:CoreMain:v1.4.0" name="SINIDType">
</xs:simpleType>我希望它看起来像这样:
<xs:simpleType name="SINIDType" />发布于 2009-07-09 05:15:17
有了这些空行,看起来您的select语句(正确地)选择了空格节点和元素。尝试使用
select="*[not(self::xs:annotation or self::xs:restriction)]|@*"它将只匹配元素节点,而不匹配文本节点。
发布于 2009-07-09 05:02:37
序列化程序负责将空元素作为<abc></abc>还是<abc/>发出,它们是完全等效的。一些序列化程序没有给出任何选项,并且总是会产生一个或另一个。
但也可能是您在它们之间添加了空格;在这种情况下,您必须将xsl:copy更改为不包含无关紧要的空格的其他内容,比如将or text() = ''添加到谓词中。
至于消除xmlns:core名称空间声明,这取决于您的上下文。如果在您的类型中有需要它的元素,或者如果您正在使用XSLT并且没有在<xsl:stylesheet>根元素上排除带有@exclude-result-prefixes属性的名称空间,那么总是会生成它。即使这样,根据您的处理器环境,序列化程序可能会“决定”不需要该名称空间输出,因为它在输入的作用域中。
而且,看到<xsl:copy> ... <xsl:copy-of .../> ... </xsl:copy>也有点奇怪。您真的不应该将copy-of包装在copys中,只需将其设置为copy-of即可。
https://stackoverflow.com/questions/1101817
复制相似问题