Xslt 如何基于变量值或结果值导入图像
我是xsl fo的新手。 在我的问题中有3个同级标记,其中一个具有属性。我必须先打印带有属性的一个,然后打印另外两个。 我的问题是,我的结果没有显示出来,我已经尝试了何时和是否显示。 这是我的密码:Xslt 如何基于变量值或结果值导入图像,xslt,xsl-fo,Xslt,Xsl Fo,我是xsl fo的新手。 在我的问题中有3个同级标记,其中一个具有属性。我必须先打印带有属性的一个,然后打印另外两个。 我的问题是,我的结果没有显示出来,我已经尝试了何时和是否显示。 这是我的密码: <fo:block> <xsl:for-each select="platforms/platform"> <xsl:choose>
<fo:block>
<xsl:for-each select="platforms/platform">
<xsl:choose>
<xsl:when test="@highestRated">
<xsl:value-of select="platform"/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
! Also available on
<xsl:for-each select="platforms/platform">
<xsl:choose>
<xsl:when test="not(@*)">
<xsl:value-of select="platform"/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</fo:block>
! 也可在
下面是兄弟姐妹的一个例子:
<platforms>
<platform>PC</platform>
<platform highestRated="true">PS3</platform>
<platform>X360</platform>
</platforms>
个人计算机
PS3
X360
我不能按照它们在这里出现的顺序使用它们,因为每组兄弟姐妹的顺序都不同。
我也没有收到任何错误,文档的其余部分显示得非常完美,它们只是不会显示结果
谢谢试着换衣服
<xsl:value-of select="platform"/>
到
希望这有帮助正如其他人所说,您的主要问题是您有
select=“platform”
,它正在寻找一个不存在的元素/platforms/platform/platform
。另外,只有一个xsl:when
的xsl:choose
与xsl:if
相同。(如果需要else条件,使用xsl:when
非常有用,而xsl:if
不提供该条件。使用xsl:choose
/xsl:when
/xsl:otherse
),但在这种情况下,您可以使用谓词只选择所需的元素;那么就不需要有条件的
这里有一些代码可以满足您的需要
<?xml version="1.0" encoding="UTF-8" ?>
<!-- New document created with EditiX at Wed Mar 21 21:51:52 GMT 2012 -->
<xsl:stylesheet
version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:variable name="nl">
<xsl:text>
</xsl:text>
</xsl:variable>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<fo:block>
<xsl:value-of select="$nl"/>
<xsl:for-each select="platforms/platform[@highestRated]">
<xsl:value-of select="."/>
<xsl:value-of select="$nl"/>
</xsl:for-each>
<xsl:text>! Also available on</xsl:text>
<xsl:value-of select="$nl"/>
<xsl:for-each select="platforms/platform[not(@highestRated)]">
<xsl:value-of select="."/>
<xsl:value-of select="$nl"/>
</xsl:for-each>
</fo:block>
</xsl:template>
</xsl:stylesheet>
! 也可在
输出
<?xml version="1.0" encoding="utf-8"?>
<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
PS3
! Also available on
PC
X360
</fo:block>
PS3
! 也可在
个人计算机
X360
使用xsl:if而不是xsl:choose也可以提高效率,但这是一个次要问题
<?xml version="1.0" encoding="utf-8"?>
<fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">
PS3
! Also available on
PC
X360
</fo:block>