XSLT:每个孩子都有一部分的div

罗宾·艾格特

我从很短的时间开始使用XSL,因此必须使用部分child标记创建多个div。所以我有这样的事情:

<Nodes>
    <Node>
        <Tag>a</Tag>
        <Tag>b</Tag>
    </Node>
    <Node>
        <Tag>c</Tag>
    </Node>
</Nodes>

我以为我可以做这样的事情:

<xsl:for-each select="/Nodes">
    <div id="node_{position()}">
        <xsl:for-each select="Node">
            <xsl:value-of select="Tag" />
        </xsl:for-each>
    </div>
</xsl:for-each>

我需要的是:

<div>
    a
    b
</div>
<div>
    c
</div>

但是我总是得到两个div和ab c。相反,第一个使用ab,另一个使用c。我是否必须枚举标签或类似的东西?

编辑:

<ProjectTopology>
    <Nodes>
        <Node>
            <Tag>Section1</Tag>
            <Nodes>
                <Node>
                    <Tag>Another section1</Tag>
                    <Tag>Another section2</Tag>
                </Node>
            </Nodes>
            <Tag>Section2</Tag>
            <Nodes>
                <Node>
                    <Tag>Another section3</Tag>
                    <Tag>Another section4</Tag>
                </Node>
            </Nodes>
        </Node>
    </Nodes>
</ProjectTopology>

好的,我现在正在寻找这样的东西:

<div id="section_1">
    Another section1
    Another section2
</div>
<div id="section_2">
    Another section3
    Another section4
</div>
michael.hor257k

但是我总是得到两个div和ab c。

不,这不是应用您在此处发布的代码的结果。实际结果是:

<div id="node_1">ac</div>

在XSLT 1.0中,以及:

<div id="node_1">a bc</div>

在XSLT 2.0中。

div输出中只有一个,因为Nodes源XML中只有一个节点-并且唯一创建a的模板div是match Nodes

为了获得想要的结果,您应该尝试以下方法:

XSLT 1.0

<xsl:template match="/Nodes">
    <root>
        <xsl:for-each select="Node">
            <div id="node_{position()}">
                <xsl:for-each select="Tag">
                    <xsl:value-of select="." />
                </xsl:for-each>
            </div>
        </xsl:for-each>
    </root>
</xsl:template>

结果

<root>
   <div id="node_1">ab</div>
   <div id="node_2">c</div>
</root>

XSLT 2.0

<xsl:template match="/Nodes">
    <root>
        <xsl:for-each select="Node">
            <div id="node_{position()}">
                <xsl:value-of select="Tag" />
            </div>
        </xsl:for-each>
    </root>
</xsl:template>

结果

<root>
   <div id="node_1">a b</div>
   <div id="node_2">c</div>
</root>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在作为对象一部分的每个数组元素上都有条件

在XSLT中选择String的一部分

(设置)语法中的XSLT值是否是XSLT标准的一部分?

Classloader是JVM的一部分还是JRE的一部分?

取弦的一部分,并与另一部分

XSLT如何更改节点名称的一部分?

XML-XSLT-保留输入XML文档的一部分

xslt不使用xsl:copy复制xml的一部分

如何使用 XSLT 从 XML 标记名称中动态提取一部分?

如何基于模式删除列中每个条目的最后一部分?

如何仅提取列表中每个元素的一部分?

并行处理列表中每个项目的Spring Batch流的一部分

如何为列表中的每个项目移动字符串的一部分

如何为每个CPU内核提供对Vec一部分的可变访问?

获取目录中每个文件名的一部分

如何在沒有孩子的情況下獲取文件夾路徑名的一部分?

子Div是否可以删除父div边界的一部分?

隐藏div元素而不隐藏div的一部分

“多部分主体必须至少具有一部分”

将 div 的一部分放在另一个下面

column-count将div的一部分移至下一列

如何显示一个div,它是php代码的一部分

jquery从div中获取一部分并生成一个链接

绝对定位的孩子中的内容是否被认为是最近的绝对定位祖先的一部分?

我的 :hover 在 CSS 中只会影响我的 div/image 的一部分

如何不显示超出其div范围的图像的一部分

用tinyscrollbar隐藏div的一部分,直到调整窗口大小

关于自动刷新php文件中<div>的一部分

如何使a框架成为HTML网格的一部分并占用父div的宽度?