Hier ist, wie dies kann erfolgen:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
exclude-result-prefixes="xsi">
<xsl:output omit-xml-declaration="yes"/>
<!-- -->
<xsl:template match="/">
<exercises xsi:noNamespaceSchemaLocation="mySchema.xsd"/>
</xsl:template>
</xsl:stylesheet>
Wenn diese Transformation auf einer beliebigen Quelle XML-Dokument angewendet wird (nicht benutzt), das gewünschte Ergebnis produziert:
<exercises xsi:noNamespaceSchemaLocation="mySchema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" />
Es ist nicht notwendig <xsl:attribute>
in Ihrem Fall zu verwenden, aber wenn nötig, kann es ohne Probleme verwendet werden:
<xsl:attribute name="xsi:noNamespaceSchemaLocation">
<xsl:value-of select="'mySchema.xsd'"/>
</xsl:attribute>
Sie beachten Sie, dass es eine gute Praxis ist, die erforderlichen Namespaces am <xsl:stylesheet>
Element so einfach zu definieren, dass sie leicht (wieder) verwendet überall sein können sie gebraucht werden. Dies ist besonders nützlich, wenn ein bestimmter Namespace für mehr als ein generiertes Element oder Attribut benötigt wird.
In diesem Fall ist es auch gut, alle diese Präfixe in den Wert des exclude-result-prefixes
Attribut angeben, so dass die Namensräume werden nicht automatisch auf alle wörtlichen Ergebniselemente vermehrt werden.
Welchen XSLT-Parser verwenden Sie? – Kev