2016-03-28 18 views
0
  <custom> 
      <section name="A"> 
      <element name="Folder">A11</element> 
      <element name="Name">Test1</element> 
      <element name="Result">Fail</element>     
      </section> 
      <section name="B"> 
      <element name="Folder">A11</element> 
      <element name="Name">Test2</element> 
      <element name="Result">Pass</element>    
      </section> 
      <section name="C"> 
      <element name="Folder">A12</element> 
      <element name="Name">Test3</element> 
      <element name="Result">Pass</element>     
      </section> 
      <section name="D"> 
      <element name="Folder">A13</element> 
      <element name="Name">Test4</element> 
      <element name="Result">Pass</element>     
      </section> 
      </custom> 
      <custom>    
      <section name="A"> 
      <element name="Folder">A12</element> 
      <element name="Name">Test1</element> 
      <element name="Result">Pass</element>     
      </section> 
      <section name="B"> 
      <element name="Folder">A12</element> 
      <element name="Name">Test2</element> 
      <element name="Result">Fail</element>     
      </section> 
      <section name="C"> 
      <element name="Folder">A11</element> 
      <element name="Name">Test3</element> 
      <element name="Result">Pass</element>  
      </section> 
      <section name="D"> 
      <element name="Folder">A13</element> 
      <element name="Name">Test4</element> 
      <element name="Result">Pass</element>     
      </section> 
      </custom> 

Gruplamanız Klasör adıyla ve ardından bölümlerinde XML Needklasörü altında grubuna Tüm Elment Adı</p> <p>Ör Klasör Bölüm İsme Göre

A11 - section name = "A" - Klasör, Ad

  • Klasör, Ad,
  • A12 Değerini Sonuç Değer

    • section name = "B" Sonuç - bölüm adı = "C" - Klasör, Ad, Sonuç Değeri

      A13 - section name = "D" - Klasör, Ad, Değer Sonuç

      --Same her Custom için gider

      ---

      formatında aşağıda neden ihtiyacınız:

        <root> 
            <custom> 
            <Folder>A11 
            <section name>A 
            <element name="Folder">A11</element> 
            <element name="Name">Test1</element> 
            <element name="Result">Fail</element> 
            </section> 
            <section name="B"> 
            <element name="Folder">A11</element> 
            <element name="Name">Test2</element> 
            <element name="Result">Pass</element> 
            </section> 
            </Folder> 
            <Folder>A12 
            <section name>C 
            <element name="Folder">A12</element> 
            <element name="Name">Test3</element> 
            <element name="Result">Pass</element> 
            </section> 
            </Folder> 
            <Folder>A13 
            <section name="D"> 
            <element name="Folder">A13</element> 
            <element name="Name">Test4</element> 
            <element name="Result">Pass</element>  
            </section> 
            </Folder> 
            <custom> 
            <custom> 
            <Folder>A11 
            <section name>C 
            <element name="Folder">A11</element> 
            <element name="Name">Test3</element> 
            <element name="Result">Pass</element> 
            </section> 
            </Folder> 
            <Folder>A12 
            <section name>A 
            <element name="Folder">A12</element> 
            <element name="Name">Test1</element> 
            <element name="Result">Pass</element> 
            </section> 
            <section name>B 
            <element name="Folder">A12</element> 
            <element name="Name">Test2</element> 
            <element name="Result">Fail</element> 
            </section> 
            </Folder> 
            <Folder>A13 
            <section name="D"> 
            element name="Folder">A13</element> 
            <element name="Name">Test4</element> 
            <element name="Result">Pass</element> 
            </section> 
            </Folder> 
            <custom> 
            </root> 
      
    +0

    SO. Neyi denediğinizi göstermeniz gerekiyor, bu bir "kodu bana ver" sitesi değil. – kebs

    +0

    Gösterdiğiniz "XML" iyi biçimlendirilmemiş: <1/2/3/image1.jpeg> 'doğru XML sözdizimi değil. XSLT kullanarak herhangi bir şeyi işleyebilmeniz için, iyi oluşturulmuş XML olması gerekir. –

    +0

    Çıktıyı XML (veya HTML) dışında gösterebilir misiniz? Teşekkür ederim –

    cevap

    0

    Önce should giriş belgesinde

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

    gelen tüm düğümler üzerinde kopya XSLT Identity Template ile başlamak Amamaç için daha sonra bir şablon ekleyebilirsiniz Daha sonra section elemanlarının gruplandırılmasını yapmak için kullanılanöğesi. XSLT 2.0'da, yo bu İçerisinde bu

    <xsl:for-each-group select="section" group-by="element[@name='Folder']"> 
    

    için xsl:for-each-group kullanabilirsiniz, yeni folder elemanı oluşturmak ve bu işe mevcut section elemanları arasında kopyalama nispeten düz ileri.

    <folder name="{current-grouping-key()}"> 
        <xsl:apply-templates select="current-group()" /> 
        </folder> 
    

    Bu XSLT'yi deneyin. Bu, gösterdiğiniz XML'in iyi oluşturulmadığından (<section name> geçerli değil) size sorgunuzda göstermiş olduğunuz XML'yi vermeyeceğini, ancak size genel bir fikir vermesi gerektiğini unutmayın.

    <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
        <xsl:output method="xml" indent="yes" /> 
    
        <xsl:template match="@*|node()"> 
        <xsl:copy> 
         <xsl:apply-templates select="@*|node()"/> 
        </xsl:copy> 
        </xsl:template> 
    
        <xsl:template match="custom"> 
        <xsl:for-each-group select="section" group-by="element[@name='Folder']"> 
         <folder name="{current-grouping-key()}"> 
         <xsl:apply-templates select="current-group()" /> 
         </folder> 
        </xsl:for-each-group> 
        </xsl:template> 
    
        <xsl:template match="element[@name='Folder']" /> 
    </xsl:stylesheet> 
    
    +0

    teşekkürler. Aşağıda hata alıyorum: XslTransformException --------------------- 'for-each-group' tanınmış bir uzantı öğesi değil. – user6125167

    +0

    Bunu XSLT 2.0 olarak etiketlediniz, ancak aslında XSLT 2.0'ı destekleyen bir işlemci kullanıyor musunuz? Dönüşümü yapmak için aslında hangi işlemciyi kullanıyorsunuz? –

    +0

    İşlemci ayrıntıları nasıl alınır? XSL başlığı: \t \t \t \t user6125167