我有以下xml ..
<?xml version="1.0" encoding="UTF-8"?>
<Report name="DB232 Report">
<rptHdr>
<exchNam>CAG</exchNam>
<rptCod>RP202</rptCod>
<rptNam>ory Report</rptNam>
<membLglNam>XYZ Germany</membLglNam>
<membId>XY</membId>
<rptPrntEffDat>2013-07-18T23:59:00</rptPrntEffDat>
<rptPrntRunDat>2013-07-18</rptPrntRunDat>
</rptHdr>
<reportNameGrp>
</Report>
现在我正在编写关于xslt 1.0的xslt我现在已经从上面的xml开发了下面的xslt我希望tit读取参数exchNam哪个值是CAG,我的xslt如下所示
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="http://xml.apache.org/xslt/java"
exclude-result-prefixes="java">
<xsl:template match="/Report">
<pprexMessageObject>
<xsl:choose>
<xsl:when test="/Report/rptHdr/rptNam='ory Report'">
<xsl:call-template name="rexReportHeader_template">
<xsl:with-param name="reportheader" select="/Report/rptHdr" />
</xsl:call-template>
</xsl:when>
</xsl:choose>
</EurexMessageObject>
</xsl:template>
<xsl:template name="rexReportHeader_template">
<xsl:param name="reportheader" />
<rexMessageObject>
<exchNam>
<xsl:value-of select="$reportheader/exchNam"/>
</exchNam>
</pprexMessageObject>
</xsl:template>
</xsl:stylesheet>
但转换后我仍然无法查看exchNam参数的值,请告知我的xslt出了什么问题
伙计们请告知
答案 0 :(得分:0)
1-“reportNameGrp”没有结束标记。纠正它。
2-删除所有匹配的第一个'/',选择并测试参数。一旦告诉模板匹配Report标记,就不需要将它添加到XML路径。
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:java="http://xml.apache.org/xslt/java"
exclude-result-prefixes="java">
<xsl:template match="Report">
<pprexMessageObject>
<xsl:choose>
<xsl:when test="rptHdr/rptNam='ory Report'">
<xsl:call-template name="rexReportHeader_template">
<xsl:with-param name="reportheader" select="rptHdr" />
</xsl:call-template>
</xsl:when>
</xsl:choose>
</EurexMessageObject>
</xsl:template>
<xsl:template name="rexReportHeader_template">
<xsl:param name="reportheader" />
<rexMessageObject>
<exchNam>
<xsl:value-of select="$reportheader/exchNam"/>
</exchNam>
</pprexMessageObject>
</xsl:template>
</xsl:stylesheet>