2013-09-23 47 views
1

我有一個包含多層嵌套的ditamap。它看起來像這樣:在嵌套的ditamaps中選擇XML節點

<map> 
    <title>This is the document title</title> 
    <mapref href="section1.ditamap" format="ditamap"/> 
    <mapref href="section2.ditamap" format="ditamap"/> 
</map> 

section1.ditampa看起來是這樣的:

<map> 
    <topicref href="section1.dita"> 
     <topicref href="subsection1.dita"> 
      <topicref href="subsubsection1.dita"/> 
      <topicref href="subsubsection2.dita"/> 
      <topicref href="subsubsection3.dita"/> 
     </topicref> 
    </topicref> 
</map> 

section1.dita看起來是這樣的:

<topic> 
    <title>This is the title for section 1</title> 
</topic> 

和subsection1.dita看起來是這樣的:

<topic> 
    <title>This is the title for subsection 1</title> 
</topic> 

我該怎麼辦在我的轉型中選擇section1和subsection1的標題?

+0

是section1.ditampa,section1.dita和subsection1.dita所有不同的文件,還是他們都在一起? – 2013-09-23 03:56:45

回答

2

使用document()函數和apply-templates來導航層次結構。這應該適合你:

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

    <xsl:template match="/map"> 
     <xsl:apply-templates select="mapref"/> 
    </xsl:template> 
    <xsl:template match="mapref"> 
     <xsl:apply-templates select="document(@href)/map/topicref"/> 
    </xsl:template>  
    <xsl:template match="topicref"> 
     <xsl:apply-templates select="document(@href)/topic"/> 
     <xsl:apply-templates select="topicref"/> 
    </xsl:template>  
    <xsl:template match="topic"> 
     <xsl:message> 
      <xsl:value-of select="title"/> 
     </xsl:message> 
    </xsl:template> 
    </xsl:stylesheet>