Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT未生成预期输出_Xslt_Xslt 1.0 - Fatal编程技术网

XSLT未生成预期输出

XSLT未生成预期输出,xslt,xslt-1.0,Xslt,Xslt 1.0,输入XML: <derivatives> <derivative id="4" name="Audio Content"> <operator id="1" name="Reliance"> <referenceCode code="62033815"> <mobileCircle id="1" name="Maharashtra"/>

输入XML:

<derivatives>
    <derivative id="4" name="Audio Content">

        <operator id="1" name="Reliance">
            <referenceCode code="62033815">
                <mobileCircle id="1" name="Maharashtra"/>
            </referenceCode>
        </operator>

        <operator id="22" name="Aircel">
            <referenceCode code="811327">
                <mobileCircle id="1" name="Maharashtra"/>
            </referenceCode>
        </operator>

    </derivative>
</derivatives>
<hellotune>
    <operator>Aircel</operator>
    <vcode>811327</vcode>
</hellotune>
<hellotune>
    <operator>Aircel</operator>
    <vcode/>
</hellotune>
<xsl:if test="derivatives/derivative/operator[@name='Aircel']">
    <hellotune>
        <operator>Aircel</operator>
        <vcode><xsl:value-of select="referenceCode/@code"/></vcode>
    </hellotune>
</xsl:if>

预期输出XML:

<derivatives>
    <derivative id="4" name="Audio Content">

        <operator id="1" name="Reliance">
            <referenceCode code="62033815">
                <mobileCircle id="1" name="Maharashtra"/>
            </referenceCode>
        </operator>

        <operator id="22" name="Aircel">
            <referenceCode code="811327">
                <mobileCircle id="1" name="Maharashtra"/>
            </referenceCode>
        </operator>

    </derivative>
</derivatives>
<hellotune>
    <operator>Aircel</operator>
    <vcode>811327</vcode>
</hellotune>
<hellotune>
    <operator>Aircel</operator>
    <vcode/>
</hellotune>
<xsl:if test="derivatives/derivative/operator[@name='Aircel']">
    <hellotune>
        <operator>Aircel</operator>
        <vcode><xsl:value-of select="referenceCode/@code"/></vcode>
    </hellotune>
</xsl:if>

艾尔塞尔
811327
电流输出(错误):

<derivatives>
    <derivative id="4" name="Audio Content">

        <operator id="1" name="Reliance">
            <referenceCode code="62033815">
                <mobileCircle id="1" name="Maharashtra"/>
            </referenceCode>
        </operator>

        <operator id="22" name="Aircel">
            <referenceCode code="811327">
                <mobileCircle id="1" name="Maharashtra"/>
            </referenceCode>
        </operator>

    </derivative>
</derivatives>
<hellotune>
    <operator>Aircel</operator>
    <vcode>811327</vcode>
</hellotune>
<hellotune>
    <operator>Aircel</operator>
    <vcode/>
</hellotune>
<xsl:if test="derivatives/derivative/operator[@name='Aircel']">
    <hellotune>
        <operator>Aircel</operator>
        <vcode><xsl:value-of select="referenceCode/@code"/></vcode>
    </hellotune>
</xsl:if>

艾尔塞尔
XSL(不起作用):

<derivatives>
    <derivative id="4" name="Audio Content">

        <operator id="1" name="Reliance">
            <referenceCode code="62033815">
                <mobileCircle id="1" name="Maharashtra"/>
            </referenceCode>
        </operator>

        <operator id="22" name="Aircel">
            <referenceCode code="811327">
                <mobileCircle id="1" name="Maharashtra"/>
            </referenceCode>
        </operator>

    </derivative>
</derivatives>
<hellotune>
    <operator>Aircel</operator>
    <vcode>811327</vcode>
</hellotune>
<hellotune>
    <operator>Aircel</operator>
    <vcode/>
</hellotune>
<xsl:if test="derivatives/derivative/operator[@name='Aircel']">
    <hellotune>
        <operator>Aircel</operator>
        <vcode><xsl:value-of select="referenceCode/@code"/></vcode>
    </hellotune>
</xsl:if>

艾尔塞尔

注意:使用XSLV1.0。为简洁起见,未提及完整的XSL。

根据您提供的XSL,可以假定上下文节点是根节点,但从根节点开始,路径
referenceCode/@code
与输入中的任何内容都不匹配。在该路径之前添加
导数/derivative/operator/
将成功找到referenceCode
@code
属性,但它将找到错误的属性。尝试这种推送方式:

<xsl:template match="/">
  <xsl:apply-templates select="derivatives/derivative/operator[@name='Aircel']" />
</xsl:template>

<xsl:template match="operator">
    <hellotune>
        <operator><xsl:value-of select="@name" /></operator>
        <vcode><xsl:value-of select="referenceCode/@code"/></vcode>
    </hellotune>
</xsl:template>

元素
中的xpath表达式没有引用输入文档中的任何节点。匹配所有节点的最佳方法是使用

//

就像你可以使用的代码一样

//referenceCode/@code (但这只是为了获取信息,使用同样的方法无法获得结果)

您可以这样尝试:

<xsl:template match="/">

<hellotune>
    <xsl:for-each select="//operator">
            <xsl:if test="./@name='Aircel'">
                <operator><xsl:value-of select="@name"/></operator>
                <vcode><xsl:value-of select="referenceCode/@code"/></vcode>
            </xsl:if>
        </xsl:for-each>
</hellotune>
</xsl:template>

希望这有帮助:)