Ich verwende derzeit zwei Stylesheets, um meine beabsichtigte Ausgabe zu erhalten. Das erste Stylesheet (pass1.xsl) erledigt die eigentliche Arbeit, und das zweite Stylesheet (pass2.xsl) entfernt Duplikate bei kleineren Formatierungsupdates.XSLT: Konsolidieren von Stylesheets
Meine Frage ist, ob ich beide Aktionen in einem einzigen Stylesheet durchführen kann.
Wenn ich mir den Inhalt anschaue, bekomme ich nicht den Eindruck, dass ich über xsl: functions arbeiten kann, weil beide Stylesheets Template Matches enthalten, die Konflikte verursachen würden, wenn ich von der zweiten in die erste kopiere. IE:
pass1.xsl:
<xsl:template match="xs:complexType">
<xsl:param name="prefix" />
<xs:complexType name="{my:updateName($prefix, @name)}">
<!-- insert xs:sequence ONLY if the child is NOT xs:complexContent -->
<xsl:choose>
<xsl:when test="*[name()='xs:complexContent']">
<xsl:apply-templates select="node()" />
</xsl:when>
<xsl:otherwise>
<xs:sequence>
<xsl:apply-templates select="node()" />
</xs:sequence>
</xsl:otherwise>
</xsl:choose>
</xs:complexType>
<xsl:apply-templates select=".//xs:element" />
</xsl:template>
pass2.xsl:
<xsl:template match="xs:complexType">
<xsl:copy>
<xsl:apply-templates select="*|@*"/>
</xsl:copy>
</xsl:template>
Um es zu wiederholen - das Ziel ist nur ein Stylesheet ausführen, um das Endergebnis zu produzieren. Es ist nicht schwer, zwei zu rennen, aber es wäre schön, das nicht zu müssen. Betrachte ich das Kopieren/Einfügen in das Original &, damit es funktioniert, oder sind Importe/enthalten, was ich mir ansehen sollte? Ich hätte lieber nur eine Stylesheet-Datei - um die Wahrscheinlichkeit zu minimieren, dass jemand versehentlich eine unterstützende Datei löscht.