我想通過文檔函數從XSLT中的不同Maven POM中提取一些屬性。該腳本本身工作正常,但文檔函數返回POM的空結果,只要我在項目標籤中有xmlns =「http://maven.apache.org/POM/4.0.0」。如果我刪除它,一切正常。
任何想法如何使它的工作,而離開它屬於xmlns屬性或爲什麼這不適用於該屬性?
這纔是我的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>
,爲了完整性,一個POM提取與 「壞」 的屬性:
<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>
好問題(+1)。請參閱我的回答,以獲取有關該問題的解釋以及最常用的解決方案。 :) – 2010-04-29 12:58:04