(变量)文件过早结束

时间:2019-07-15 09:28:40

标签: xml xslt xslt-1.0 xslt-2.0

嗨,我是XSLT的新手,此刻我尝试捕获两个变量,其中一个来自数据库,另一个是我自己的Head受控循环过程的NULL变量。我在这里没有找到任何可以解决该问题的东西,所以这是我的代码:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output media-type="text/xml" method="xml"></xsl:output>
    <xsl:template match="/">
        <root>
            <xsl:variable name="Counter" select="document('context:Counter')"></xsl:variable>
            <xsl:variable name="Counted">
                <xsl:value-of>0</xsl:value-of>
            </xsl:variable>
            <Counter>
                <xsl:value-of select="$Counter"></xsl:value-of>
            </Counter>
            <Counted>
                <xsl:value-of select="$Counted"></xsl:value-of>
            </Counted>
            <xsl:if test="not($Counted = $Counter)">
                <xsl:processing-instruction name="ConditionState">
                    2000
                </xsl:processing-instruction>
            </xsl:if>
            <xsl:if test="$Counted = $Counter">
                <xsl:processing-instruction name="ConditionState">
                    2001
                </xsl:processing-instruction>
            </xsl:if>
        </root>
    </xsl:template>
</xsl:stylesheet>

我希望ConditionState在我的情况下等于2000,等于2001,等于2001。问题是他跳出了《守则》,我不知道为什么或在哪里…… 这是我的错误:

net.sf.saxon.trans.XPathException: org.xml.sax.SAXParseException; Premature end of file.

我希望这里有人可以帮助我。

1 个答案:

答案 0 :(得分:0)

关闭这篇文章,这是我的解决方法:

我的代码:

<?xml version="1.0" encoding="UTF-8"?><?xe.source ../Data/DBO_Output.xml#root?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output media-type="text/xml" method="xml"></xsl:output>
    <xsl:template match="/">
        <root>
            <xsl:variable name="Counter">
                <xsl:value-of select="./root"></xsl:value-of>
            </xsl:variable>
            <xsl:variable name="Counted" select="0">
            </xsl:variable>
            <Counter>
                <xsl:value-of select="$Counter"></xsl:value-of>
            </Counter>
            <Counted>
                <xsl:value-of select="$Counted"></xsl:value-of>
            </Counted>
            <xsl:if test="$Counter &gt;= $Counted">
                <xsl:processing-instruction name="ConditionState">
                    2000
                </xsl:processing-instruction>
            </xsl:if>
            <xsl:if test="not($Counter &gt;= $Counted) or $Counter = $Counted">
                <xsl:processing-instruction name="ConditionState">
                    2001
                </xsl:processing-instruction>
            </xsl:if>
        </root>
    </xsl:template>
</xsl:stylesheet>

我将数据库数据写在一个外部xml文件中,然后只需读取该数据即可获取用于转换的数据。