0

有一个问题看不懂,不胜感激:

我有一个看起来像这样的 xml 文件

<xml>
    <parent>
        <child_node>1</child_node>
        <child_node>2</child_node>
        <child_node>3</child_node>
    </parent>
    <parent>
        <child_node>4</child_node>
    </parent>
</xml>

还有一个 xsl 模板:

<xsl:template name="template">
    <xsl:param name="top_node"/>

    <xsl:for-each select="$top_node/child::child_node">
        <xsl:value-of select="."/>
    </xsl:for-each>
</xsl:template>

这被称为<xsl:with-param name="top_node" select="xml/parent">

我希望这仅返回作为单个父节点的子节点的子节点,如此处所示但是它返回所有子节点。我在这里想念什么?

4

1 回答 1

2

如果不看更多内容,很难弄清楚这个 XSLT 的最终意图是什么,但您得到这种行为的原因是该路径xml/parent选择了与该路径匹配的所有节点,而不仅仅是第一个节点。如果您只想将其应用于第一个,您可以这样做:

<xsl:with-param name="top_node" select="xml/parent[1]">

如果您想将其应用于某个其他人:

<xsl:with-param name="top_node" select="xml/parent[2]">
<xsl:with-param name="top_node" select="xml/parent[3]">
etc.
于 2013-01-21T07:27:42.540 回答