0

XML ファイルは次のとおりです。

<?xml version="1.0"?> 
<?xml-stylesheet type="text/xsl" href="2.xsl" ?>


<root>
    <shop>
        <person> 
            <employee> 
                <name> Alexis </name> 
                <role> Manager </role> 
                <task> Sales </task> 
            </employee> 

            <employee>
                <name> Employee2 </name>
            </employee>
        </person>

        <employee>
            <name> Blake2 </name>
        </employee>

    </shop>



    <person> 
        <employee2>
            <role2> Supervisor </role2> 
            <name2> Blake </name2> 
            <task2> Control </task2> 
        </employee2>
    </person>
</root>

XSLT ファイルは次のとおりです。

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">



<xsl:template match="root"> 
<html><head></head> 
<body>
Start of root in XSLT <p/> <xsl:apply-templates select="person" /> <p/>

End of root in XSLT

</body> 
</html> 
</xsl:template> 



<xsl:template match="shop">
"Step 1 start"
<xsl:apply-templates select="*/*"/>
"Step 1 done" <p/>
</xsl:template> 



<xsl:template match="employee"> 
<u> <xsl:apply-templates select="name"/> </u> 
(Task: <xsl:apply-templates select="task"/>) 
<br></br> 
</xsl:template> 


</xsl:stylesheet>

出力は次のとおりです。

XSLT のルートの開始

スーパーバイザーブレイクコントロール

XSLT のルートの終わり

私の質問は、Alexis と Employee2 が出力に含まれないのはなぜですか? それらは両方とも<person>要素の下にあります.....

4

2 に答える 2

0

しかし、あなたは誰でも欲しくないのです?知っているが、それを言う方法がわからなかった場合は、次のように少しスラッシュしてください。<xsl:apply-templates select="//person" />

于 2012-06-10T08:53:36.443 に答える
0

<xsl:template match="root">要素に適用され<root>ます。そこで、現在のノードの直接の子である要素 (ルート要素)<xsl:apply-templates select="person" />を選択します。それ自体にはテンプレートが定義されていないため、XSLT のデフォルトの動作が実行されます。つまり、テキスト ノードのみがコピーされます。<person><root><person>

他のテンプレートはまったく実行されません。これは、ルート レベル (ドキュメント自体に関連する) に<shop>or<employee>要素がなく、テンプレートも 経由<apply-templates>で呼び出されないためです。

あなたの質問にもっと明確に答えるために、最初の<person>要素は別の要素にネストされているため選択されませんが、<apply-templates>指示<person>は現在のノードに直接表示されている要素のみを選択します。

于 2012-06-10T09:02:45.930 に答える