Grüße!XSLT Document Funktion gibt leeres Ergebnis auf Maven POM zurück
Ich möchte einige Eigenschaften aus verschiedenen Maven POMs in einem XSLT über die Dokumentfunktion extrahieren. Das Skript selbst funktioniert gut, aber die Dokumentfunktion gibt ein leeres Ergebnis für das POM zurück, solange ich die xmlns = "http://maven.apache.org/POM/4.0.0" im Projekt-Tag habe. Wenn ich es entferne, funktioniert alles gut.
Eine Idee, wie dies funktioniert, während das xmlns-Attribut dort bleibt, wo es hingehört oder warum das nicht mit dem Attribut funktioniert?
Hier kommt der relevante Teil meiner XSLT:
<xsl:template match="abcs">
<xsl:variable name="artifactCoordinate" select="abc"/>
<xsl:choose>
<xsl:when test="document(concat($artifactCoordinate,'-pom.xml'))">
<abc>
<ID><xsl:value-of select="$artifactCoordinate"/></ID>
<xsl:copy-of select="document(concat($artifactCoordinate,'-pom.xml'))/project/properties"/>
</abc>
</xsl:when>
<xsl:otherwise>
<xsl:message terminate="yes">
Transformation failed: POM "<xsl:value-of select="concat($artifactCoordinate,'-pom.xml')"/>" doesn't exist.
</xsl:message>
</xsl:otherwise>
</xsl:choose>
Und der Vollständigkeit halber, einen POM-Extrakt mit dem "schlechten" Attribut:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- ... -->
<properties>
<proalpha.version>[5.2a]</proalpha.version>
<proalpha.openedge.version>[10.1B]</proalpha.openedge.version>
<proalpha.optimierer.version>[1.1]</proalpha.optimierer.version>
<proalpha.sonic.version>[7.6.1]</proalpha.sonic.version>
</properties>
</project>
Gute Frage (+1). Siehe meine Antwort für eine Erklärung des Problems und für die am häufigsten verwendete Lösung. :) –