2010-08-11 7 views
1

Мой XML выглядитГруппировка с помощью XSLT 1.0

<xml version="1.0" standalone="no"> 
<Alerts AlertsName=""> 
<Alert UserId="13" OwnerId="13" OwnerName="jasprice" OwnerEmail="[email protected]" 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> 

Теперь нам нужно сгруппировать активы по первому атрибуту Type (бывший глобализации), а затем необходимо сгруппировать по значению (бывшая Страна stratagies). Нам нужно отображать глобализацию и стратарии только один раз и нужно отображать все активы ниже этого. Я могу сделать это с XSLT 2.0 легко, но он не поддерживается в Microsoft .net, поэтому он не может использовать.

Может ли кто-нибудь помочь мне здесь?

Заранее спасибо.

+0

Обращайте ваше внимание на приставку кода - по крайней мере, отформатируйте его для удобства чтения и не напрямую от IE. – Oded

+0

Спасибо. изменилось. – jvm

+0

Хороший вопрос (+1). См. Мой ответ для полного и эффективного решения XSLT 1.0. –

ответ

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="[email protected]" 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="[email protected]" 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 для группировки.

+0

Отличный ответ Dimitre. Но проблема здесь в том, что у меня есть XML, и я просто сделаю преобразование XSLT, и он должен сгенерировать желаемый HTML. Ваш ответ прекрасен, но он добавит еще один шаг в обработке, который я не смогу приспособить к своему бизнес-решению. Можете ли вы предложить еще один? – jvm

+0

Нам нужен выход HTML, как

Global Business Страна Стратегии AssetTitle1 AssetDescp1 AssetTitle2 AssetDescp2 Глобализация AssetTitle1 AssetDescp1 AssetTitle2 AssetDescp2
Точно так же и для других групп ........... – jvm

+0

@ jatin: Я * решил * решил ваш p roblem - вложенная группировка. Эта группа не относится к HTML. Если вы не знаете, какой HTML использовать, просто спросите людей в группе HTML. Ваш вопрос * XSLT * был полностью отвечен.Не говоря уже о том, что вы никогда не упоминали в своем первоначальном вопросе, что вам нужен выход HTML !!! –

Смежные вопросы