嗨,我是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.
我希望这里有人可以帮助我。
答案 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 >= $Counted">
<xsl:processing-instruction name="ConditionState">
2000
</xsl:processing-instruction>
</xsl:if>
<xsl:if test="not($Counter >= $Counted) or $Counter = $Counted">
<xsl:processing-instruction name="ConditionState">
2001
</xsl:processing-instruction>
</xsl:if>
</root>
</xsl:template>
</xsl:stylesheet>
我将数据库数据写在一个外部xml文件中,然后只需读取该数据即可获取用于转换的数据。