2017-10-10 16 views
0

複数の項目を選択します。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> 

を項目、項目タイプ=「」とアイテムタイプ=「備考」があります。

アイテムとアイテムタイプ= ""を同じ列に表示する必要がありますが、アイテムタイプ= "備考"ではありません。 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と私の現在の出力が

(要素からの)要素2.2と1.2が欠落している
Element 2.0 
Element 2.1 
Element 1.0 
Element 1.1 

です。

したがって、要素と同様に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

素晴らしい作品です、ありがとうございます! 私はそれがより短いので、ルペシュの答えを受け入れました。 – SchweizerSchoggi

+0

:) np ...私は彼の答えを早く見なかった。ありがとう。 – Optional

関連する問題