Der Serialisierer ist dafür verantwortlich, ob ein leeres Element als <abc></abc>
emittiert wird, oder <abc/>
, und sie sind genau gleichwertig. Einige Serialisierer geben keine Option und werden immer das eine oder das andere erzeugen.
Aber es könnte sein, dass Sie Leerzeichen zwischen ihnen emittieren; In diesem Fall müssen Sie den Wert xsl:copy
in einen anderen Wert ändern, der den unbedeutenden Leerraum nicht enthält, z. B. indem Sie Ihrem Prädikat or text() = ''
hinzufügen.
Soweit die xmlns:core
Namespace-Deklaration zu beseitigen, das hängt von Ihrem Kontext. Es wird erzeugt wird immer, wenn es ein Element, das es innerhalb Ihrer Art erfordert, oder wenn Sie XSLT verwenden und nicht den Namespace mit dem @exclude-result-prefixes
Attribute auf dem <xsl:stylesheet>
Wurzelelement ausgeschlossen. Und selbst dann, abhängig von Ihrer Prozessorumgebung, kann der Serialisierer "entscheiden", dass er diesen Namespaceausgang unnötigerweise wünscht, da er in der Eingabe enthalten war.
Außerdem ist es irgendwie merkwürdig <xsl:copy> ... <xsl:copy-of .../> ... </xsl:copy>
zu sehen. Sie sollten die copy-of
innerhalb der copy
s nicht wirklich wickeln. Mach es einfach copy-of
.