【问题标题】:Grouping using XSLT 1.0使用 XSLT 1.0 进行分组
【发布时间】:2010-08-11 12:43:19
【问题描述】:

我的 XML 看起来像

 <xml version="1.0" standalone="no"> 
 <Alerts AlertsName="">
 <Alert UserId="13" OwnerId="13" OwnerName="jasprice" OwnerEmail="jatin.mehta@test.com" Scope="I">
 <Assets>
 <Asset>
 <AssetTaxonamy>
 <AssetTopics>
  <AssetTopic Type="Global business">Globalisation</AssetTopic> 
  </AssetTopics>
  </AssetTaxonamy>
  <AssetTitle>Doing it the Chinese way: Disney's strategy for a lucrative ride in China</AssetTitle> 
  <AssetDescription>FROM INSEAD KNOWLEDGE As trite as the phrase ?think global, act local? may be, it nevertheless encapsulates The Walt Disney Company?s approach to making a success of its business in China. To that end, producing content that has a cultural and emotional resonance with Chinese consumers is crucial, says Stanley Cheung, Disney?s managing director for Greater China. ?We see it in China today, that ...</AssetDescription> 
  <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=467282231</AssetLink> 
  <AssetPubDate>7/23/2010</AssetPubDate> 
  <AssetArrivalDate>8/9/2010</AssetArrivalDate> 
  <AssetSource>Executive briefings / whitepapers</AssetSource> 
  </Asset>
 <Asset>
 <AssetTaxonamy>
 <AssetTopics>
  <AssetTopic Type="Sales and marketing">Marketing effectiveness</AssetTopic> 
  </AssetTopics>
  </AssetTaxonamy>
  <AssetTitle>The empowered sales team: Enhancing productivity through thebetter use of information</AssetTitle> 
  <AssetDescription>FROM THE ECONOMIST INTELLIGENCE UNIT Sponsored by Microsoft Introduction Sales professionals create value by transforming their company?s raw product or service into a tailored solution for a customer?s needs. In a setting where customers have access to an unprecedented amount of product information, this is an increasingly challenging task. To thrive in this environment, companies...</AssetDescription> 
  <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=1297294514</AssetLink> 
  <AssetPubDate>7/23/2010</AssetPubDate> 
  <AssetArrivalDate>8/9/2010</AssetArrivalDate> 
  <AssetSource>Executive briefings / whitepapers</AssetSource> 
  </Asset>
 <Asset>
 <AssetTaxonamy>
 <AssetTopics>
  <AssetTopic Type="Sales and marketing">Customer management</AssetTopic> 
  </AssetTopics>
  </AssetTaxonamy>
  <AssetTitle>On the front lines: The role of information in enhancing customer service</AssetTitle> 
  <AssetDescription>FROM THE ECONOMIST INTELLIGENCE UNIT Sponsored by Microsoft Introduction Customer service professionals play a critical role in most companies because they are the people customers are most often in contact with, especially when problems arise. In today?s unsettled market environment, the ability to build a deep understanding of evolving customer needs and expectations can make a com...</AssetDescription> 
  <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=1327294517</AssetLink> 
  <AssetPubDate>7/23/2010</AssetPubDate> 
  <AssetArrivalDate>8/9/2010</AssetArrivalDate> 
  <AssetSource>Executive briefings / whitepapers</AssetSource> 
  </Asset>
 <Asset>
 <AssetTaxonamy>
 <AssetTopics>
  <AssetTopic Type="Leadership">Managing change</AssetTopic> 
  </AssetTopics>
  </AssetTaxonamy>
  <AssetTitle>World of leaders</AssetTitle> 
  <AssetDescription>FROM INDIAN SCHOOL OF BUSINESS At the inaugural ?ISB World of Leaders? speaker series event hosted by the Indian School of Business (ISB), Henry R Kravis, Co-Founder, Co-Chairman and Co-CEO, Kohlberg Kravis Roberts &amp; Company (KKR), New York, interacted with a select group of Indian business leaders about how he started his enterprise, the journey so far and his views on the private equity industr...</AssetDescription> 
  <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=1757259560</AssetLink> 
  <AssetPubDate>7/23/2010</AssetPubDate> 
  <AssetArrivalDate>8/9/2010</AssetArrivalDate> 
  <AssetSource>Executive briefings / whitepapers</AssetSource> 
  </Asset>
 <Asset>
 <AssetTaxonamy>
 <AssetTopics>
  <AssetTopic Type="Global business">Country strategies</AssetTopic> 
  </AssetTopics>
  </AssetTaxonamy>
  <AssetTitle>State industries in Lithuania: Follow the money</AssetTitle> 
  <AssetDescription>State-owned enterprises in eastern Europe are often a mess. Lithuania is trying to reform them DIG into the political undergrowth anywhere between the Baltic and the Black Seas and you soon find curious connections between state-owned enterprises, officials and politicians. They mostly escape public scrutiny--not least because politicians of all stripes tend to benefit from the state firms? large...</AssetDescription> 
  <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=67277991</AssetLink> 
  <AssetPubDate>7/23/2010</AssetPubDate> 
  <AssetArrivalDate>8/9/2010</AssetArrivalDate> 
  <AssetSource>Executive briefings / whitepapers</AssetSource> 
  </Asset>
</Assets>
</Alert>
</Alerts>

现在我们需要按第一个类型属性(例如全球化)对资产进行分组,然后需要按价值(例如国家战略)进行分组。我们只需要显示一次全球化和国家战略,并且需要显示其下方的所有资产。我可以使用 XSLT 2.0 轻松完成此操作,但 Microsoft .net 不支持它,因此无法使用。

有人可以帮我吗?

提前致谢。

【问题讨论】:

  • 粘贴代码时请多加小心 - 至少格式化它以提高可读性,而不是直接从 IE 粘贴。
  • 好问题 (+1)。请参阅我的答案以获得完整且高效的 XSLT 1.0 解决方案。

标签: xslt xslt-grouping


【解决方案1】:

这种转变

<xsl:stylesheet version="2.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:key name="kAssetByTypeName" match="Asset"
  use="AssetTaxonamy/AssetTopics/AssetTopic[1]/@Type"/>

 <xsl:key name="kAssetByTypeNameValue" match="Asset"
  use="concat(AssetTaxonamy/AssetTopics/AssetTopic[1]/@Type,
              AssetTaxonamy/AssetTopics/AssetTopic[1]
              )
  "/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="Assets">
   <Assets>
     <xsl:for-each select=
     "Asset[generate-id()
           =
            generate-id(key('kAssetByTypeName',
                            AssetTaxonamy/AssetTopics
                                       /AssetTopic[1]/@Type
                            )
                            [1]
                        )
           ]
     ">
      <xsl:variable name="vcurType" select=
       "AssetTaxonamy/AssetTopics/AssetTopic[1]/@Type"/>

       <Topic Type="{$vcurType}">
          <xsl:for-each select=
           "key('kAssetByTypeName',$vcurType)
                [generate-id()
                =
                 generate-id(key('kAssetByTypeNameValue',
                                  concat($vcurType,
                                         AssetTaxonamy/AssetTopics/AssetTopic[1]
                                         )
                                 )[1]
                             )
                ]
           ">
             <xsl:variable name="vSubject" select=
              "AssetTaxonamy/AssetTopics/AssetTopic[1]"/>

             <Subject>
               <xsl:value-of select="$vSubject"/>
             </Subject>

             <xsl:apply-templates select=
              "key('kAssetByTypeNameValue',
                    concat($vcurType, $vSubject)
                   )
              "/>
          </xsl:for-each>
       </Topic>
     </xsl:for-each>
   </Assets>
 </xsl:template>
</xsl:stylesheet>

应用于提供的(更正为格式良好的)XML 文档时

<Alerts AlertsName="">
    <Alert UserId="13" OwnerId="13" OwnerName="jasprice" OwnerEmail="jatin.mehta@test.com" Scope="I">
        <Assets>
            <Asset>
                <AssetTaxonamy>
                    <AssetTopics>
                        <AssetTopic Type="Global business">Globalisation</AssetTopic>
                    </AssetTopics>
                </AssetTaxonamy>
                <AssetTitle>Doing it the Chinese way: Disney's strategy for a lucrative ride in China</AssetTitle>
                <AssetDescription>FROM INSEAD KNOWLEDGE As trite as the phrase ?think global, act local? may be, it nevertheless encapsulates The Walt Disney Company?s approach to making a success of its business in China. To that end, producing content that has a cultural and emotional resonance with Chinese consumers is crucial, says Stanley Cheung, Disney?s managing director for Greater China. ?We see it in China today, that ...</AssetDescription>
                <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=467282231</AssetLink>
                <AssetPubDate>7/23/2010</AssetPubDate>
                <AssetArrivalDate>8/9/2010</AssetArrivalDate>
                <AssetSource>Executive briefings / whitepapers</AssetSource>
            </Asset>
            <Asset>
                <AssetTaxonamy>
                    <AssetTopics>
                        <AssetTopic Type="Sales and marketing">Marketing effectiveness</AssetTopic>
                    </AssetTopics>
                </AssetTaxonamy>
                <AssetTitle>The empowered sales team: Enhancing productivity through thebetter use of information</AssetTitle>
                <AssetDescription>FROM THE ECONOMIST INTELLIGENCE UNIT Sponsored by Microsoft Introduction Sales professionals create value by transforming their company?s raw product or service into a tailored solution for a customer?s needs. In a setting where customers have access to an unprecedented amount of product information, this is an increasingly challenging task. To thrive in this environment, companies...</AssetDescription>
                <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=1297294514</AssetLink>
                <AssetPubDate>7/23/2010</AssetPubDate>
                <AssetArrivalDate>8/9/2010</AssetArrivalDate>
                <AssetSource>Executive briefings / whitepapers</AssetSource>
            </Asset>
            <Asset>
                <AssetTaxonamy>
                    <AssetTopics>
                        <AssetTopic Type="Sales and marketing">Customer management</AssetTopic>
                    </AssetTopics>
                </AssetTaxonamy>
                <AssetTitle>On the front lines: The role of information in enhancing customer service</AssetTitle>
                <AssetDescription>FROM THE ECONOMIST INTELLIGENCE UNIT Sponsored by Microsoft Introduction Customer service professionals play a critical role in most companies because they are the people customers are most often in contact with, especially when problems arise. In today?s unsettled market environment, the ability to build a deep understanding of evolving customer needs and expectations can make a com...</AssetDescription>
                <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=1327294517</AssetLink>
                <AssetPubDate>7/23/2010</AssetPubDate>
                <AssetArrivalDate>8/9/2010</AssetArrivalDate>
                <AssetSource>Executive briefings / whitepapers</AssetSource>
            </Asset>
            <Asset>
                <AssetTaxonamy>
                    <AssetTopics>
                        <AssetTopic Type="Leadership">Managing change</AssetTopic>
                    </AssetTopics>
                </AssetTaxonamy>
                <AssetTitle>World of leaders</AssetTitle>
                <AssetDescription>FROM INDIAN SCHOOL OF BUSINESS At the inaugural ?ISB World of Leaders? speaker series event hosted by the Indian School of Business (ISB), Henry R Kravis, Co-Founder, Co-Chairman and Co-CEO, Kohlberg Kravis Roberts &amp; Company (KKR), New York, interacted with a select group of Indian business leaders about how he started his enterprise, the journey so far and his views on the private equity industr...</AssetDescription>
                <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=1757259560</AssetLink>
                <AssetPubDate>7/23/2010</AssetPubDate>
                <AssetArrivalDate>8/9/2010</AssetArrivalDate>
                <AssetSource>Executive briefings / whitepapers</AssetSource>
            </Asset>
            <Asset>
                <AssetTaxonamy>
                    <AssetTopics>
                        <AssetTopic Type="Global business">Country strategies</AssetTopic>
                    </AssetTopics>
                </AssetTaxonamy>
                <AssetTitle>State industries in Lithuania: Follow the money</AssetTitle>
                <AssetDescription>State-owned enterprises in eastern Europe are often a mess. Lithuania is trying to reform them DIG into the political undergrowth anywhere between the Baltic and the Black Seas and you soon find curious connections between state-owned enterprises, officials and politicians. They mostly escape public scrutiny--not least because politicians of all stripes tend to benefit from the state firms? large...</AssetDescription>
                <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=67277991</AssetLink>
                <AssetPubDate>7/23/2010</AssetPubDate>
                <AssetArrivalDate>8/9/2010</AssetArrivalDate>
                <AssetSource>Executive briefings / whitepapers</AssetSource>
            </Asset>
        </Assets>
    </Alert>
</Alerts>

产生想要的分组

<Alerts AlertsName="">
   <Alert UserId="13" OwnerId="13" OwnerName="jasprice" OwnerEmail="jatin.mehta@test.com" Scope="I">
      <Assets>
         <Topic Type="Global business">
            <Subject>Globalisation</Subject>
            <Asset>
               <AssetTaxonamy>
                  <AssetTopics>
                     <AssetTopic Type="Global business">Globalisation</AssetTopic>
                  </AssetTopics>
               </AssetTaxonamy>
               <AssetTitle>Doing it the Chinese way: Disney's strategy for a lucrative ride in China</AssetTitle>
               <AssetDescription>FROM INSEAD KNOWLEDGE As trite as the phrase ?think global, act local? may be, it nevertheless encapsulates The Walt Disney Company?s approach to making a success of its business in China. To that end, producing content that has a cultural and emotional resonance with Chinese consumers is crucial, says Stanley Cheung, Disney?s managing director for Greater China. ?We see it in China today, that ...</AssetDescription>
               <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=467282231</AssetLink>
               <AssetPubDate>7/23/2010</AssetPubDate>
               <AssetArrivalDate>8/9/2010</AssetArrivalDate>
               <AssetSource>Executive briefings / whitepapers</AssetSource>
            </Asset>
            <Subject>Country strategies</Subject>
            <Asset>
               <AssetTaxonamy>
                  <AssetTopics>
                     <AssetTopic Type="Global business">Country strategies</AssetTopic>
                  </AssetTopics>
               </AssetTaxonamy>
               <AssetTitle>State industries in Lithuania: Follow the money</AssetTitle>
               <AssetDescription>State-owned enterprises in eastern Europe are often a mess. Lithuania is trying to reform them DIG into the political undergrowth anywhere between the Baltic and the Black Seas and you soon find curious connections between state-owned enterprises, officials and politicians. They mostly escape public scrutiny--not least because politicians of all stripes tend to benefit from the state firms? large...</AssetDescription>
               <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=67277991</AssetLink>
               <AssetPubDate>7/23/2010</AssetPubDate>
               <AssetArrivalDate>8/9/2010</AssetArrivalDate>
               <AssetSource>Executive briefings / whitepapers</AssetSource>
            </Asset>
         </Topic>
         <Topic Type="Sales and marketing">
            <Subject>Marketing effectiveness</Subject>
            <Asset>
               <AssetTaxonamy>
                  <AssetTopics>
                     <AssetTopic Type="Sales and marketing">Marketing effectiveness</AssetTopic>
                  </AssetTopics>
               </AssetTaxonamy>
               <AssetTitle>The empowered sales team: Enhancing productivity through thebetter use of information</AssetTitle>
               <AssetDescription>FROM THE ECONOMIST INTELLIGENCE UNIT Sponsored by Microsoft Introduction Sales professionals create value by transforming their company?s raw product or service into a tailored solution for a customer?s needs. In a setting where customers have access to an unprecedented amount of product information, this is an increasingly challenging task. To thrive in this environment, companies...</AssetDescription>
               <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=1297294514</AssetLink>
               <AssetPubDate>7/23/2010</AssetPubDate>
               <AssetArrivalDate>8/9/2010</AssetArrivalDate>
               <AssetSource>Executive briefings / whitepapers</AssetSource>
            </Asset>
            <Subject>Customer management</Subject>
            <Asset>
               <AssetTaxonamy>
                  <AssetTopics>
                     <AssetTopic Type="Sales and marketing">Customer management</AssetTopic>
                  </AssetTopics>
               </AssetTaxonamy>
               <AssetTitle>On the front lines: The role of information in enhancing customer service</AssetTitle>
               <AssetDescription>FROM THE ECONOMIST INTELLIGENCE UNIT Sponsored by Microsoft Introduction Customer service professionals play a critical role in most companies because they are the people customers are most often in contact with, especially when problems arise. In today?s unsettled market environment, the ability to build a deep understanding of evolving customer needs and expectations can make a com...</AssetDescription>
               <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=1327294517</AssetLink>
               <AssetPubDate>7/23/2010</AssetPubDate>
               <AssetArrivalDate>8/9/2010</AssetArrivalDate>
               <AssetSource>Executive briefings / whitepapers</AssetSource>
            </Asset>
         </Topic>
         <Topic Type="Leadership">
            <Subject>Managing change</Subject>
            <Asset>
               <AssetTaxonamy>
                  <AssetTopics>
                     <AssetTopic Type="Leadership">Managing change</AssetTopic>
                  </AssetTopics>
               </AssetTaxonamy>
               <AssetTitle>World of leaders</AssetTitle>
               <AssetDescription>FROM INDIAN SCHOOL OF BUSINESS At the inaugural ?ISB World of Leaders? speaker series event hosted by the Indian School of Business (ISB), Henry R Kravis, Co-Founder, Co-Chairman and Co-CEO, Kohlberg Kravis Roberts &amp; Company (KKR), New York, interacted with a select group of Indian business leaders about how he started his enterprise, the journey so far and his views on the private equity industr...</AssetDescription>
               <AssetLink>http://viewswire.eiu.com/index.asp?layout=EBArticleVW3&amp;article_id=1757259560</AssetLink>
               <AssetPubDate>7/23/2010</AssetPubDate>
               <AssetArrivalDate>8/9/2010</AssetArrivalDate>
               <AssetSource>Executive briefings / whitepapers</AssetSource>
            </Asset>
         </Topic>
      </Assets>
   </Alert>
</Alerts>

注意:使用 Muenchian 方法进行分组。

【讨论】:

  • 很好的答案 Dimitre。但这里的问题是,我有 XML,我只会做 XSLT 转换,它应该生成所需的 HTML。您的答案是完美的,但它会在处理过程中增加一个步骤,我无法适应我的业务解决方案。你能再推荐一个吗?
  • 我们需要像 Global Business Country StrategiesAssetTitle1AssetDescp1AssetTitle2AssetDescp2全球化AssetTitle1AssetDescp1AssetTitle2 AssetDescp2
    其他组也一样............
  • @jatin:我已经解决了你的问题——嵌套分组。本组与 HTML 无关。如果您不知道要使用什么 HTML,请询问 HTML 组中的人员。您的 XSLT 问题已得到完全解答。更不用说您在原始问题中从未提到您需要 HTML 输出!!!
  • Dimitre,我可以处理 HTML。但是当我尝试在这两个 语句之间将节点放入 时,它并没有给我所有节点。
  • 跟随有什么用?
猜你喜欢
相关资源
最近更新 更多
热门标签