0

試験勉強をしているのですが、これを正しく理解しているか確認したいと思います。テンプレートが next/previous/item に適用されていないため、次は ABC を出力しますか、それとも単に BC を出力しますか?

input.xml :

<?xml version="1.0" encoding="UTF-8"?>
<next>
    <previous>
        <item>A</item>
    </previous>
    <item>B</item>
    <item>C</item>
</next>

入力.xsl :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
        <HowDoes>
            <xsl:apply-templates select="next/item" />
            <xsl:apply-templates select="previous/item" />
        </HowDoes>
    </xsl:template>
    <xsl:template match="item">
        <ThisWork>
            <xsl:copy-of select="." />
        </ThisWork>
    </xsl:template>
</xsl:stylesheet>
4

1 に答える 1

0

Aドキュメントのルート (最初のテンプレートが一致する場所) の観点からすると、ノードは 2 つあるがnext/itemノードがない ため、スタイルシートは無視されますprevious/itemnext/previous/itemノードのみ。

テンプレートを次のように変更した場合

<xsl:template match="/">
    <HowDoes>
      <xsl:apply-templates select=".//item" />
    </HowDoes>
</xsl:template>

子のすべての子ではなく、現在のノードのすべての子孫itemを探しているため、すべてのノードが見つかります。item itemprevious

于 2013-04-11T12:21:11.880 に答える