2017-05-31 47 views
-1

我正在使用此algo如何刪除xslt中的空值?

http://www.jenitennison.com/xslt/grouping/muenchian.html用於分組。我可以使用算法,但我面臨的一個問題。我有一個xml我在其中應用Over的分組。我能夠顯示我的數據。但有時@over成爲blank ..我不想顯示數據.. 這裏是我的代碼 http://xsltransform.net/pNmBxZY/1

改造

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> 
    <xsl:output method="html" doctype-public="XSLT-compat" omit-xml-declaration="yes" encoding="UTF-8" indent="yes" /> 
    <xsl:key name="node-by-over" match="Node" use="@Over" /> 

    <xsl:template match="/Innings"> 
     <hmtl> 
     <head> 
      <title>New Version!</title> 
     </head> 
     <xsl:apply-templates select="Node[generate-id() = generate-id(key('node-by-over', @Over)[1])]"/> 

     </hmtl> 
    </xsl:template> 

    <xsl:template match="Node"> 
    over::: <h1><xsl:value-of select="@Over"/></h1> 
    <table id="{Over}"> 

     <xsl:for-each select="key('node-by-over', @Over)"> 
     <tr> 
     <td>balls:::<xsl:value-of select="@Ball"/></td> 
     <td>runs:::<xsl:value-of select="Runs"/></td> 

     </tr> 
     </xsl:for-each> 
    </table> 
    </xsl:template> 
</xsl:transform> 

當前結果

<!DOCTYPE html 
    PUBLIC "XSLT-compat"> 
<hmtl> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>New Version!</title> 
    </head> 
    over::: 
    <h1>1</h1> 
    <table id=""> 
     <tr> 
     <td>balls:::1</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::2</td> 
     <td>runs:::1</td> 
     </tr> 
     <tr> 
     <td>balls:::3</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::4</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::5</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::6</td> 
     <td>runs:::2</td> 
     </tr> 
    </table> 
    over::: 
    <h1></h1> 
    <table id=""> 
     <tr> 
     <td>balls:::</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::</td> 
     <td>runs:::0</td> 
     </tr> 
    </table> 
    over::: 
    <h1>2</h1> 
    <table id=""> 
     <tr> 
     <td>balls:::1</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::2</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::3</td> 
     <td>runs:::2</td> 
     </tr> 
     <tr> 
     <td>balls:::4</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::5</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::6</td> 
     <td>runs:::1</td> 
     </tr> 
    </table> 
    over::: 
    <h1>3</h1> 
    <table id=""> 
     <tr> 
     <td>balls:::1</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::2</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::3</td> 
     <td>runs:::1</td> 
     </tr> 
     <tr> 
     <td>balls:::4</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::5</td> 
     <td>runs:::1</td> 
     </tr> 
    </table> 
</hmtl> 

預計當前和預期產出之間輸出

<!DOCTYPE html 
    PUBLIC "XSLT-compat"> 
<hmtl> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>New Version!</title> 
    </head> 
    over::: 
    <h1>1</h1> 
    <table id=""> 
     <tr> 
     <td>balls:::1</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::2</td> 
     <td>runs:::1</td> 
     </tr> 
     <tr> 
     <td>balls:::3</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::4</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::5</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::6</td> 
     <td>runs:::2</td> 
     </tr> 
    </table> 

    over::: 
    <h1>2</h1> 
    <table id=""> 
     <tr> 
     <td>balls:::1</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::2</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::3</td> 
     <td>runs:::2</td> 
     </tr> 
     <tr> 
     <td>balls:::4</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::5</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::6</td> 
     <td>runs:::1</td> 
     </tr> 
    </table> 
    over::: 
    <h1>3</h1> 
    <table id=""> 
     <tr> 
     <td>balls:::1</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::2</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::3</td> 
     <td>runs:::1</td> 
     </tr> 
     <tr> 
     <td>balls:::4</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::5</td> 
     <td>runs:::1</td> 
     </tr> 
    </table> 
</hmtl> 

差異

over::: 
    <h1></h1> 
    <table id=""> 
     <tr> 
     <td>balls:::</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::</td> 
     <td>runs:::0</td> 
     </tr> 
    </table> 

我不想遍歷Node在XML中具有

blank @Over ..See例子
<Node Id="14" Over="" 

我不想遍歷id =「14」,因爲它沒有超過值。但是現在的代碼是這麼做的,爲什麼它顯示在html部分之上?如何申請支票?

目前這樣的

over::: 
    <h1>3</h1> 
    <table id=""> 
     <tr> 
     <td>balls:::1</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::2</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::3</td> 
     <td>runs:::1</td> 
     </tr> 
     <tr> 
     <td>balls:::4</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::5</td> 
     <td>runs:::1</td> 
     </tr> 
    </table> 

最後一個節點顯示我們能證明這樣的

over::: 
    <h1>2.5</h1> 
    <table id=""> 
     <tr> 
     <td>balls:::1</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::2</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::3</td> 
     <td>runs:::1</td> 
     </tr> 
     <tr> 
     <td>balls:::4</td> 
     <td>runs:::0</td> 
     </tr> 
     <tr> 
     <td>balls:::5</td> 
     <td>runs:::1</td> 
     </tr> 
    </table> 

@過來。@球(最後一個節點)

回答

1

如果我正確地理解這一點,你想改變:

<xsl:apply-templates select="Node[generate-id() = generate-id(key('node-by-over', @Over)[1])]"/> 

到:

<xsl:apply-templates select="Node[@Over>0][generate-id() = generate-id(key('node-by-over', @Over)[1])]"/> 
+0

這是正確的'的 user944513

+0

我還想問一個問題..我可以在前面的結尾處顯示最後一個'Node'或'over',然後是球 – user944513

+0

看我更新的問題 – user944513