2017-10-10 169 views
0

我有下面的XML:XSLT选择多个项目

<?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> 

有项目,项目类型= “” 和项目类型= “备注”。

我需要在同一列中显示项目和项目类型=“”,但不是项目类型=“备注”。 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以获取元素?

回答

1

使用

<xsl:for-each select="History/Release/Item[@Type!='Remark' or not(@Type)]"> 

而不是

<xsl:for-each select="History/Release/Item[@Type!='Remark']"> 
+0

运行完美 - 感谢你的时间在这! – SchweizerSchoggi

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> 
+0

不错,谢谢! 我接受了Rupesh答案,因为它更短。 – SchweizerSchoggi

+0

:) np ...我以前没有看到他的回答。谢谢。 – Optional