2013-10-18 33 views
0

如果可以根據負面列表過濾數據,請讓我知道嗎?
即。我不希望匹配特定字符串或小於某個值的記錄。 任何幫助將高度appriciatedxslt:根據負面列表過濾xml數據

樣品輸入XML

<?xml version="1.0" encoding="UTF-8"?> 
<top> 
    <Results> 
     <a>no</a> 
     <b>10</b> 
     <c>12</c> 
     <d>9</d> 
    </Results> 
    <Results> 
     <a>_no_</a> 
     <b>8</b> 
     <c>50</c> 
     <d>12</d> 
    </Results> 
    <Results> 
     <a>yes</a> 
     <b>6</b> 
     <c>55</c> 
     <d>56</d> 
    </Results> 
    <Results> 
     <a>yes</a> 
     <b>23</b> 
     <c>32</c> 
     <d>34</d> 
    </Results> 
</top> 

在此我想篩選出
不得(a〜 '無') 和(b> 8)
預期的輸出是

<?xml version="1.0" encoding="UTF-8"?> 
<top> 
    <Results> 
     <a>yes</a> 
     <b>23</b> 
     <c>32</c> 
     <d>34</d> 
    </Results> 
</top> 

回答

1

你可以用這個XSL嘗試:

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml"/> 

    <!-- Identity transform: copy everything from input tree to output tree --> 
    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <!-- Template for those elements we want to filter. It is an empty template so it does nothing: --> 
    <xsl:template match="Results[not ((a != 'no') and (b &gt; 8))]" /> 
</xsl:stylesheet> 

我希望它有幫助。