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