我有以下XML:
<?xml version="1.0" encoding="UTF-8"?>
<History>
<Release Date="20170927" Version="2">
<Item Type="">Element 2.0</Item>
<Item Type="">Element 2.1</Item>
<Item>Element 2.2</Item>
<Item Type="Remark">REMARK!</Item>
</Release>
<Release Date="20170925" Version="1">
<Item Type="">Element 1.0</Item>
<Item Type="">Element 1.1</Item>
<Item>Element 1.2</Item>
<Item Type="Remark">REMARK!</Item>
</Release>
</History>
有项目,项目类型=&#34;&#34;和项目类型=&#34;备注&#34;。
我需要显示项目和项目类型=&#34;&#34;在同一列中,但不是项目类型=&#34;备注&#34;。给出了XML结构,我只能更改以下XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="History/Release/Item[@Type!='Remark']">
<xsl:value-of select="." disable-output-escaping="yes"/><br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
我使用此XSLT的当前输出是
Element 2.0
Element 2.1
Element 1.0
Element 1.1
缺少元素2.2和1.2(来自元素)。
那么,我如何修复XSLT以及元素?
答案 0 :(得分:1)
使用
<xsl:for-each select="History/Release/Item[@Type!='Remark' or not(@Type)]">
而不是
<xsl:for-each select="History/Release/Item[@Type!='Remark']">
答案 1 :(得分:1)
这是带条件表达式的xslt:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<xsl:for-each select="History/Release/Item[not(@Type)] | History/Release/Item[@Type!='Remark']">
<xsl:value-of select="." disable-output-escaping="yes"/><br />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>