2016-01-13 77 views
-1
  <!-- Input XML --> 
     <v2:College> 
      <v2:Student>Name1</v2:Student> 
      <v2:Student>Name2</v2:Student> 
      <v2:Student>Name3</v2:Student> 
      <v2:Teacher> 
       <v2:Class> 
       <v2:Subject>ABC</v2:Subject> 
       </v2:Class> 
      </v2:Teacher> 
    </v2:College> 


<!-- XSLT Transformation so far i did -->  
<xsl:stylesheet xmlns:xsl="..." xmlns:ns0="..."> 
    <xsl:template match="/"> 
    <!-- <xsl:variable name="Student" select="ns0:College/ns0:Student"/> --> 
     <xsl:for-each select="ns0:College"> 
      <v2:College> 
       <xsl:for-each select="ns0:Student"> 
        <v2:Student> 
         <xsl:value-of select="."/> 
        </v2:Student> 
       </xsl:for-each> 

     <xsl:for-each select="ns0:College/ns0:Teacher/ns0:Class"> 
      <xsl:for-each select="ns0:Subject"> 
        <v2:Subject> 
         <xsl:value-of select="."/> 
        </v2:Subject> 
      </xsl:for-each> 
     </xsl:for-each> 
     </v2:College> 
     </xsl:for-each> 
    </xsl:template> 
</xsl:stylesheet> 

<!-- I am expecting output as --> 
    <v2:College> 
      <v2:Student>Name1</v2:Student> 
      <v2:Student>Name2</v2:Student> 
      <v2:Student>Name3</v2:Student> 
      <v2:Teacher> 
       <v2:Class> 
       <v2:Subject>ABC</v2:Subject> 
        <!-- Same no of Student should come here -->     
       <v2:Student>Name1</v2:Student> 
       <v2:Student>Name2</v2:Student> 
       <v2:Student>Name3</v2:Student>     
       </v2:Class> 
      </v2:Teacher> 
    </v2:College> 

注:三個學生姓名(名稱1,名稱2,名稱3)目前不在類來element..Also我已經聲明的變量我在哪裏存儲學生姓名的值。請給我建議,我怎麼能得到這個還是我做錯了如何讓孩子標籤內/插入父標籤,當我們做XSLT轉換

+0

http://stackoverflow.com/help/someone-answers –

回答

0

鑑於以下合式輸入:

XML

<v2:College xmlns:v2="http://example.com/v2"> 
    <v2:Student>Name1</v2:Student> 
    <v2:Student>Name2</v2:Student> 
    <v2:Student>Name3</v2:Student> 
    <v2:Teacher> 
     <v2:Class> 
     <v2:Subject>ABC</v2:Subject> 
     </v2:Class> 
    </v2:Teacher> 
</v2:College> 

以下樣式:

XSLT 1.0

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
xmlns:v2="http://example.com/v2"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> 
<xsl:strip-space elements="*"/> 

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

<xsl:template match="v2:Class"> 
    <xsl:copy> 
     <xsl:apply-templates/> 
     <xsl:copy-of select="/v2:College/v2:Student"/> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 

將返回:

結果

<?xml version="1.0" encoding="UTF-8"?> 
<v2:College xmlns:v2="http://example.com/v2"> 
    <v2:Student>Name1</v2:Student> 
    <v2:Student>Name2</v2:Student> 
    <v2:Student>Name3</v2:Student> 
    <v2:Teacher> 
     <v2:Class> 
     <v2:Subject>ABC</v2:Subject> 
     <v2:Student>Name1</v2:Student> 
     <v2:Student>Name2</v2:Student> 
     <v2:Student>Name3</v2:Student> 
     </v2:Class> 
    </v2:Teacher> 
</v2:College> 

替換"http://example.com/v2"與您的XML實際使用的命名空間。

+0

謝謝你@ michael.hor257k。但我想要的只是元素沒有任何其他。如果有更多的子標籤,那麼也輸出。而且我想打印像 ABC 名1 名2 NAME3 DEV

+0

@DEV我不明白您的評論。請編輯您的問題,並提供一個「*有更多子標籤*」的示例。 –