XSL 子例程参数不显示
XSL sub routine parameter not displaying
我正在编写一个 XSLT 来对 XML 进行一些错误检查,并将 Tag/element 作为参数传递给子例程,但我无法显示错误消息上的参数。
我不明白为什么以下不显示 $param1(或者为什么它是空的)。
代码如下:
我尝试使用 select="string($param1)" 并且 select="$param1"
<!-- ABOUT_VERSION level -->
<xsl:template match="m:ABOUT_VERSION">
<xsl:call-template name="TagCheckCount">
<xsl:with-param name="param1" select="m:CreatedDatetime"/>
<xsl:with-param name="param2" select="1"/>
<xsl:with-param name="param3" select="1"/>
</xsl:call-template>
</xsl:template>
<!-- Check The Numbers of Tags that exist -->
<xsl:template name="TagCheckCount">
<xsl:param name="param1"/> <!-- Tag -->
<xsl:param name="param2"/> <!-- Lower Bound -->
<xsl:param name="param3"/> <!-- Upper Bound -->
<xsl:choose>
<!-- If Lower and Upper Bounds are 1 -->
<xsl:when test="$param2 = 1 and $param3 = 1">
<!-- Check if it exists -->
<xsl:call-template name="TagCheckExists">
<xsl:with-param name="param1" select="$param1"/>
</xsl:call-template>
</xsl:when>
<!-- Else If -->
<xsl:otherwise>
<!-- Count is < Lower Bound -->
<xsl:call-template name="TagCheckLT">
<xsl:with-param name="param1" select="$param1"/>
<xsl:with-param name="param2" select="$param2"/>
</xsl:call-template>
<!-- Count is > Upper Bound -->
<xsl:call-template name="TagCheckGT">
<xsl:with-param name="param1" select="$param1"/>
<xsl:with-param name="param2" select="$param2"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Check if Tag exists -->
<xsl:template name="TagCheckExists">
<xsl:param name="param1"/> <!-- Tag -->
<xsl:value-of select="string($param1)" /><br/><br/><br/>
<!-- Check if it exists -->
<xsl:if test="not($param1)">
<!-- Return Error Message and XPath -->
<p class="error">Requirement: Missing: <xsl:call-template name="GetFullPath"/><xsl:value-of select="string($param1)" /></p>
</xsl:if>
</xsl:template>
答案是:
传递字符串时,必须将字符串包含在双引号内的单引号中:
否则:
这里的答案是,因为 param1 的元素不存在,所以它在元素(不存在)中串起信息,所以它实际上什么都不显示,正确。
我正在编写一个 XSLT 来对 XML 进行一些错误检查,并将 Tag/element 作为参数传递给子例程,但我无法显示错误消息上的参数。
我不明白为什么以下不显示 $param1(或者为什么它是空的)。
代码如下:
我尝试使用 select="string($param1)" 并且 select="$param1"
<!-- ABOUT_VERSION level -->
<xsl:template match="m:ABOUT_VERSION">
<xsl:call-template name="TagCheckCount">
<xsl:with-param name="param1" select="m:CreatedDatetime"/>
<xsl:with-param name="param2" select="1"/>
<xsl:with-param name="param3" select="1"/>
</xsl:call-template>
</xsl:template>
<!-- Check The Numbers of Tags that exist -->
<xsl:template name="TagCheckCount">
<xsl:param name="param1"/> <!-- Tag -->
<xsl:param name="param2"/> <!-- Lower Bound -->
<xsl:param name="param3"/> <!-- Upper Bound -->
<xsl:choose>
<!-- If Lower and Upper Bounds are 1 -->
<xsl:when test="$param2 = 1 and $param3 = 1">
<!-- Check if it exists -->
<xsl:call-template name="TagCheckExists">
<xsl:with-param name="param1" select="$param1"/>
</xsl:call-template>
</xsl:when>
<!-- Else If -->
<xsl:otherwise>
<!-- Count is < Lower Bound -->
<xsl:call-template name="TagCheckLT">
<xsl:with-param name="param1" select="$param1"/>
<xsl:with-param name="param2" select="$param2"/>
</xsl:call-template>
<!-- Count is > Upper Bound -->
<xsl:call-template name="TagCheckGT">
<xsl:with-param name="param1" select="$param1"/>
<xsl:with-param name="param2" select="$param2"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<!-- Check if Tag exists -->
<xsl:template name="TagCheckExists">
<xsl:param name="param1"/> <!-- Tag -->
<xsl:value-of select="string($param1)" /><br/><br/><br/>
<!-- Check if it exists -->
<xsl:if test="not($param1)">
<!-- Return Error Message and XPath -->
<p class="error">Requirement: Missing: <xsl:call-template name="GetFullPath"/><xsl:value-of select="string($param1)" /></p>
</xsl:if>
</xsl:template>
答案是:
传递字符串时,必须将字符串包含在双引号内的单引号中:
否则: 这里的答案是,因为 param1 的元素不存在,所以它在元素(不存在)中串起信息,所以它实际上什么都不显示,正确。