XSL子例程参数不显示

时间:2017-12-15 19:57:19

标签: xml templates xslt parameters subroutine

我正在编写一个XSLT来对XML进行一些错误检查,并且我将Tag / element作为参数传递给子例程,但是我在错误消息上显示参数时遇到了问题。

我不明白为什么以下内容不会显示$ param1(或为什么显示为空)。

代码如下:

我尝试使用select =“string($ param1)”并选择=“$ 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>

1 个答案:

答案 0 :(得分:0)

答案是:

传递STRING时,必须在双引号内的单引号中包含字符串,如下所示:

否则: 这里的答案是因为param1的元素不存在,所以它将元素中的信息(不存在)串起来,所以它实际上没有显示任何内容。