Saluti!La funzione documento XSLT restituisce risultati vuoti su Maven POM
Desidero estrarre alcune proprietà da diverse POM Maven in un XSLT tramite la funzione documento. Lo script funziona correttamente ma la funzione del documento restituisce un risultato vuoto per il POM finché ho il xmlns = "http://maven.apache.org/POM/4.0.0" nel tag del progetto. Se lo rimuovo, tutto funziona bene.
Qualche idea su come eseguire questa operazione lasciando l'attributo xmlns a cui appartiene o perché non funziona con l'attributo in posizione?
Arriva la quota di competenza del mio 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>
E, per completezza, un estratto POM con l'attributo "cattivo":
<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>
Buona domanda (+1). Vedi la mia risposta per una spiegazione del problema e per la soluzione più utilizzata. :) –