Chúc mừng!Chức năng tài liệu XSLT trả về kết quả trống trên Maven POM
Tôi muốn trích xuất một số thuộc tính từ các POM Maven khác nhau trong XSLT thông qua hàm tài liệu. Bản thân kịch bản hoạt động tốt nhưng hàm tài liệu trả về một kết quả trống cho POM miễn là tôi có số xmlns = "http://maven.apache.org/POM/4.0.0" trong thẻ dự án. Nếu tôi gỡ bỏ nó, mọi thứ đều hoạt động tốt.
Bất kỳ ý tưởng nào về cách thực hiện tác vụ này trong khi rời khỏi thuộc tính xmlns nơi thuộc tính hoặc lý do tại sao điều này không hoạt động với thuộc tính tại chỗ?
Ở đây có phần liên quan của XSLT tôi:
<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>
Và, cho đầy đủ, chiết xuất POM với "xấu" thuộc tính:
<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>
Câu hỏi hay (+1). Xem câu trả lời của tôi cho một lời giải thích của vấn đề và cho các giải pháp thường được sử dụng nhất. :) –