XSLT选择多个项目

时间:2017-10-10 12:41:28

标签: xml xslt

我有以下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以及元素?

2 个答案:

答案 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>