2017-04-18 113 views
0

我是新來的XSLT,我試圖改變以下XML:簡單的XSLT轉換時XML元素具有文本節點和子節點

<li>Hi there <person>David</person> , how is it going? </li> 

我想這就像轉換到另一個XML的東西:

<response>Hi there PERSON_NAME , how is it going? </response> 

我到目前爲止是這樣的:

<xsl:template match="li"> 
    <response><xsl:value-of select="text()"/> 
    <xsl:choose> 
      <xsl:when test="person"> 
       <xsl:text> PERSON_NAME </xsl:text> 
      </xsl:when> 
    </xsl:choose> 
    </response> 
</xsl:template> 

這是輸出我得到:

<response>Hi there , how is it going? PERSON_NAME</response> 

不完全是我想要的。我是xslt的新手,並讀過一本書。我沒有找到任何有xml元素在其文本值之間有一個子節點的情況。不知道xslt是否可以處理這個問題,或者我缺少一些基本的東西。任何幫助將不勝感激。我正在使用xslt 2.0

回答

0

您可以簡單地定義兩個模板來處理您的情況。

<xsl:template match="li"> 
    <response> 
     <xsl:apply-templates/> 
    </response> 
</xsl:template> 

<xsl:template match="person"> 
    <xsl:text>PERSON_NAME</xsl:text> 
</xsl:template>