它是我之前的question的反向映射。 我在这里试图改造
<Information>
<Element11/>
<Element12/>
<Element13/>
</Information>
<!-- This will be the child Element1 -->
<Metadata>
<Element11/>
<Element12/>
<Element13/>
</Metadata>
<Metadata>
<Element11/>
<Element12/>
<Element13/>
</Metadata>
要:
<Element1>
<Element11/>
<Element12/>
<Element13/>
<Element1>
<Element11/>
<Element12/>
<Element13/>
</Element1>
<Element1>
<Element11/>
<Element12/>
<Element13/>
</Element1>
</Element1>
我尝试在根目录中使用or
,但它无效。
<xsl:for-each select="Information | Metadata">
<Element1>
<!-- Rest of the elements -->
<xsl:for-each select="Metadata">
<Element1>
<!-- Rest of the elements -->
</Element1>
</xsl:for-each>
</Element1>
</xsl:for-each>
答案 0 :(得分:1)
我真的不知道这个例子的意义,但下面的代码应该产生所需的输出......但它不是解决它的唯一可行方法:-D
<xsl:template match="Information">
<Element1>
<xsl:for-each select="*">
<xsl:copy>
<!-- if the elements contains values -->
<xsl:value-of select="."/>
</xsl:copy>
</xsl:for-each>
<xsl:for-each select="../Metadata">
<Element1>
<xsl:for-each select="*">
<xsl:copy>
<!-- if the elements contains values -->
<xsl:value-of select="."/>
</xsl:copy>
</xsl:for-each>
</Element1>
</xsl:for-each>
</Element1>
</xsl:template>
答案 1 :(得分:1)
另一种非常相似的方式,假设输入格式正确(包含在某个元素中):)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/SomeElement">
<Element1>
<xsl:copy-of select="Information/*"/>
<xsl:for-each select="Metadata">
<Element1>
<xsl:copy-of select="*"/>
</Element1>
</xsl:for-each>
</Element1>
</xsl:template>
</xsl:stylesheet>