2013-05-02 77 views
1

我無法通過應用Muenchian方法檢索唯一列表。我根據 「系列名稱」 屬性試圖組需要使用Muenchian方法對xsl:for-each-group進行分組

Sample Input XML: 
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<Distribution> 
<ManifestHeader> 
    <Assets> 
     <Asset> 
      <ID>23341528</ID> 
      <CreateDate>2008-01-14T17:02:01Z</CreateDate> 
      <MetaDatas> 
       <MetaData Name="psa.orig.source.showTitle">Green Home 2008</MetaData> 
       <MetaData Name="displayRunTime">00:01</MetaData> 
       <MetaData Name="Series Title">Desperate Landscapes</MetaData> 
      </MetaDatas> 
     </Asset> 
     <Asset> 
      <ID>23341529</ID> 
      <CreateDate>2010-08-23T15:44:58Z</CreateDate> 
      <MetaDatas> 
       <MetaData Name="psa.orig.source.showTitle">Urban Oasis 2010</MetaData> 
       <MetaData Name="displayRunTime">00:02</MetaData> 
       <MetaData Name="Series Title">Toy Hunter</MetaData> 
      </MetaDatas> 
     </Asset> 
     <Asset> 
      <ID>23377202</ID> 
      <CreateDate>2007-05-18T07:40:25Z</CreateDate> 
      <MetaDatas> 
       <MetaData Name="webSeries"/> 
       <MetaData Name="psa.orig.source.showTitle">Cool Tools</MetaData> 
       <MetaData Name="displayRunTime">00:20</MetaData> 
       <MetaData Name="Series Title">Desperate Landscapes</MetaData> 
      </MetaDatas> 
     </Asset> 
    </Assets> 
</ManifestHeader> 
</Distribution> 

XLST:

<xsl:key name="keySeriesName" match="MetaData[@Name='Series Title']" use="text()" /> 

<xsl:for-each select="MetaData[@Name='Series Title'][generate-id() =       
        generate-id(key('keySeriesName', text())[1])]"> 
also tried: 
<xsl:for-each select="MetaData[@Name='Series Title'][count(. |  key('keySeriesName',text())[1]) = 1]"> 

anyhelp將不勝感激提前

感謝

回答

0

由於<MetaData>元素是兒童<MetaData>並且您正在嘗試搜索文檔中的整個集合,您將需要將XPath調整爲確保您解決所有的人:

/Distribution/ManifestHeader/Assets/Asset/MetaDatas/MetaData 
    [@Name='Series Title'][generate-id() =       
          generate-id(key('keySeriesName', text())[1])] 

,或者你可以使用更短,但效率較低:

//MetaData[@Name='Series Title'][generate-id() = 
           generate-id(key('keySeriesName', text())[1])] 
相關問題