Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 在进行XSLT转换时,如何在子标记中获取/插入父标记 名称1 姓名2 名字3 基础知识 名称1 姓名2 名字3 基础知识 名称1 姓名2 名字3_Xml_Xslt_Xpath - Fatal编程技术网

Xml 在进行XSLT转换时,如何在子标记中获取/插入父标记 名称1 姓名2 名字3 基础知识 名称1 姓名2 名字3 基础知识 名称1 姓名2 名字3

Xml 在进行XSLT转换时,如何在子标记中获取/插入父标记 名称1 姓名2 名字3 基础知识 名称1 姓名2 名字3 基础知识 名称1 姓名2 名字3,xml,xslt,xpath,Xml,Xslt,Xpath,注意:三个学生名(Name1,Name2,Name3)目前不在class元素下。另外,我声明了一个变量,在其中存储学生名的值。请给我一些建议,说明如何获得此信息或我做错了以下格式良好的输入: XML <!-- Input XML --> <v2:College> <v2:Student>Name1</v2:Student> <v2:Student>Name2&l

注意:三个学生名(Name1,Name2,Name3)目前不在class元素下。另外,我声明了一个变量,在其中存储学生名的值。请给我一些建议,说明如何获得此信息或我做错了以下格式良好的输入:

XML

          <!-- 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
基础知识
以下样式表:

XSLT1.0

<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>

将返回:

结果

<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>

名称1
姓名2
名字3
基础知识
名称1
姓名2
名字3

替换
“http://example.com/v2“
与XML使用的实际名称空间一致。

谢谢你@michael.hor257k。但我想要的是唯一的元素,而不是任何其他元素。若有更多的子标记,那个么输出中也会出现。我还想像ABC Name1 Name2 Name3@DEV一样打印我不理解你的评论。请编辑您的问题并提供一个“有更多子标签”的示例。
<?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>