1

我无法通过应用 Muenchian 方法来检索唯一列表。我正在尝试根据“系列标题”属性进行分组

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]">

任何帮助,将不胜感激

提前致谢

4

1 回答 1

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])]
于 2013-05-06T01:30:23.533 回答