首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >每个对象的XSLT逻辑

每个对象的XSLT逻辑
EN

Stack Overflow用户
提问于 2013-03-31 20:12:56
回答 1查看 179关注 0票数 0

下面是输入。在循环中-1,2,3元素是无界的。如果我们在转换中使用for each循环,我们将得到类似A A,B B,C C的输出。但我希望输出与输入相同。

请参见下面的输出。

输入:

代码语言:javascript
复制
<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>

对于上面的输入,如果我们为每个输入,我们将得到如下的输出

代码语言:javascript
复制
A
A
B
B
C
C

但我希望下面的output.how我们可以实现的this.the解决方案应该是generic.appreciate你的帮助。

输出

代码语言:javascript
复制
<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:

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-31 22:37:52

<xsl:for-each>不是必需的,在这种情况下会使事情变得更加复杂和困难。

如果您只是想在输出中生成源<xsl:copy-of>**:**的精确副本,那么您可以使用

代码语言:javascript
复制
<?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>

另一种选择是使用

代码语言:javascript
复制
<?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生成不同的输出,您可以添加以下模板:

代码语言:javascript
复制
<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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15729240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档