我是XSL的新手,我对几个子元素有两个问题。
我的XML文档中有以下结构:
<root>
<levelOne>
<entry1>Test1</entry1>
<entry2>Test2</entry2>
<levelTwo>
<entry3>Test3</entry3>
<entry4>Test4</entry4>
<levelThree>
<entry5>Test5</entry5>
<entry6>Test6</entry6>
</levelThree>
</levelTwo>
</levelOne>
<levelOne>
<entry1>Test1</entry1>
<entry2>Test2</entry2>
<levelTwo>
<entry3>Test3</entry3>
<entry4>Test4</entry4>
<levelThree>
<entry5>Test5</entry5>
<entry6>Test6</entry6>
</levelThree>
</levelTwo>
</levelOne>
<!-- etc. -->
</root>
我的XSL看起来像这样:
<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="root">
<resultlistEntries>
<xsl:for-each select="levelOne">
<entry1><xsl:value-of select="entry1"/></entry1>
<entry2><xsl:value-of select="entry2"/></entry2>
<!-- address child elements? -->
</xsl:for-each>
</resultlistEntries>
</xsl:template>
</xsl:stylesheet>
我希望条目3,4,5,6等在我的输出XML文档中是同一级别。所以预期的输出应该是这样的:
<root>
<levelOne>
<entry1>Test1</entry1>
<entry2>Test2</entry2>
<entry3>Test3</entry3>
<entry4>Test4</entry4>
<entry5>Test5</entry5>
<entry6>Test6</entry6>
<entry1>Test1</entry1>
<entry2>Test2</entry2>
<entry3>Test3</entry3>
<entry4>Test4</entry4>
<entry5>Test5</entry5>
<entry6>Test6</entry6>
<!-- etc. -->
</root>
答案 0 :(得分:0)
假设各种<entryX>
元素没有任何共同点,除了它们都带有文本节点,请尝试:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/root" >
<root>
<levelOne>
<xsl:apply-templates select="levelOne/*"/>
</levelOne>
</root>
</xsl:template>
<xsl:template match="*[text()]" >
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>