2016-01-13 78 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我不明白您的评论。请编辑您的问题,并提供一个“*有更多子标签*”的示例。 –