2013-04-11 65 views
0

我正在學習考試,我想確保我正確理解這一點。下列內容會打印出ABC還是BC,因爲這些模板並未應用於next/previous/item?XSLT練習示例

的input.xml:

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

input.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> 
+2

看看這裏:http://xsltcake.com/slices/EeAoyt – joshcomley 2013-04-11 11:13:08

+0

這是一個很棒的工具;謝謝! – Lebowski156 2013-04-11 11:22:45

+0

不客氣! – joshcomley 2013-04-11 11:54:40

回答

0

樣式表會忽略A因爲,從文檔的根的角度來看(其中第一個模板相匹配),有兩個next/item節點,但是沒有previous/item節點。只有一個next/previous/item節點。

如果你改變了你的模板

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

那麼所有item節點會被發現,因爲它是尋找替代previous兒童的一切item孩子當前節點的所有item後代