如何让孩子标签内/插入父标签,当我们做XSLT转换
问题描述:
<!-- 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转换
答
鉴于以下合式输入:
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。但我想要的只是
+0
@DEV我不明白您的评论。请编辑您的问题,并提供一个“*有更多子标签*”的示例。 –
http://*.com/help/someone-answers –