下面是输入。在循环中-1,2,3元素是无界的。如果我们在转换中使用for each循环,我们将得到类似A A,B B,C C的输出。但我希望输出与输入相同。
请参见下面的输出。
输入:
<LOOP-1><!-- unbounded -->
<element1>A</element1>
<LOOP-1>
<LOOP-2><!-- unbounded -->
<element2>B</element2>
<LOOP-2>
<LOOP-3><!-- unbounded -->
<element3>C</element3>
<LOOP-3>
<LOOP-1>
<element1> A</element1>
<LOOP-1>
<LOOP-2>
<element2>B</element2>
<LOOP-2>
<LOOP-3>
<element3>C</element3>
<LOOP-3>对于上面的输入,如果我们为每个输入,我们将得到如下的输出
A
A
B
B
C
C但我希望下面的output.how我们可以实现的this.the解决方案应该是generic.appreciate你的帮助。
输出
<LOOP-1>
<element1>A</element1>
<LOOP-1>
<LOOP-2>
<element2>B</element2>
<LOOP-2>
<LOOP-3>
<element3>C</element3>
<LOOP-3>
<LOOP-1>
<element1> A</element1>
<LOOP-1>
<LOOP-2>
<element2>B</element2>
<LOOP-2>
<LOOP-3>
<element3>C</element3>
<LOOP-3>XSLT:
<xsl:for-each select="LOOP-1">
<xsl:element1>
<xsl:value-of select="element1"/>
</xsl:element1>
</xsl:for-each>
<xsl:for-each select="LOOP-2">
<xsl:element2>
<xsl:value-of select="element2"/>
</xsl:element2>
</xsl:for-each>
<xsl:for-each select="LOOP-3">
<xsl:element3>
<xsl:value-of select="element3"/>
</xsl:element3>
</xsl:for-each>发布于 2013-03-31 22:37:52
<xsl:for-each>不是必需的,在这种情况下会使事情变得更加复杂和困难。
如果您只是想在输出中生成源<xsl:copy-of>**:**的精确副本,那么您可以使用
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="/">
<xsl:copy-of select="."/>
</xsl:template>
</xsl:stylesheet>另一种选择是使用
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>标识转换的优点是,如果您确实希望自定义输出并转换任何内容,则只需添加一个模板来匹配该节点或属性,即可处理这种特殊情况。
例如,如果您想为第二个B生成不同的输出,您可以添加以下模板:
<xsl:template match="LOOP-2[2]/element2[.='B']">
<xsl:copy>
<xsl:text>This is a special case for the second LOOP-2/element2 who's text() equals 'B'</xsl:text>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>https://stackoverflow.com/questions/15729240
复制相似问题