2014-01-27 20 views
0

我想從XSLT文檔中的變量中獲取值。這裏是我的代碼:從XSLT中的節點集變量中抓取元素

<?xml version="1.0" encoding="utf-8"?> 

<xsl:template match="/"> 

    <Composition xmlns="Playlist"> 
    <xsl:variable name="source_var"> 
     <Source identifier="0">Inside Source</Source> 
    </xsl:variable> 

    <Video> 
     <xsl:value-of select="ms:node-set($source_var)/Source"/> 
    </Video> 
    </Composition> 

</xsl:template> 

它不工作。輸出是這樣的:

<Composition xmlns="Playlist"> <Video></Video> </Composition>

當它應該是這樣的:

<Composition xmlns="Playlist"> <Video>Inside Source</Video> </Composition>

當我從<Composition>標記它的工作原理刪除的命名空間xmlns="Playlist"。因此,我認爲它與命名空間的事,但我必須保持命名空間。

我覺得ms:node-set($source_var)/Source是找錯了命名空間,但我不知道如何解決這個probelem。

回答

1

變化

<xsl:variable name="source_var"> 
    <Source identifier="0">Inside Source</Source> 
</xsl:variable> 

<xsl:variable name="source_var" xmlns=""> 
    <Source identifier="0">Inside Source</Source> 
</xsl:variable> 

如果可以的話,還是要

<xsl:variable name="source_var"> 
    <Source xmlns="" identifier="0">Inside Source</Source> 
</xsl:variable> 

如果你不能改變元素的命名空間,那麼你需要使用在你的路徑前綴例如你需要

<xsl:value-of select="ms:node-set($source_var)/ns1:Source" xmlns:ns1="Playlist"/> 

當然不是把申報的value-of你也可以把它放在xsl:stylesheet

相關問題