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 に答える