2010-03-07 46 views
1

這是XML文件的摘錄。使用XSLT從指定的子節點元素中選擇字符串/文字

<rdf:RDF> 
     <rdf:Description rdf:about="http://abc.org/JohnD"> 
      <video:Movie xml:lang="en" xmlns:video="http://example.org/movie">Avatar</video:Movie> 
      </rdf:Description> 

     <rdf:Description rdf:about="http://abc.org/JohnD"> 
     <foaf:interest xml:lang="en" xmlns:foaf="http://xmlns.com/foaf/0.1/">games</foaf:interest> 
     </rdf:Description> 

</rdf:RDF> 

的XSL摘錄

<xsl:template match="rdf:RDF/rdf:Description"> 
    <xsl:value-of select="video:Movie"/> 
</xsl:template> 

我想從節點名爲<video:Movie>只有

我已經使用<xsl:value-of select="video:Movie"/>和其他各種組合嘗試選擇文字「阿凡達」,但它只是不會顯示。我已經在XSL標頭中相應地聲明瞭名稱空間。

+0

在您的Xml文檔和樣式表中聲明瞭rdf命名空間嗎?除了xmlns之外,這裏所有的東西都是正確的:rdf =「...」 – dkackman 2010-03-07 15:05:34

+0

我已經聲明瞭每個需要的名稱空間。因爲如果沒有,XSL鏈接到的ASP.net應用程序將拋出異​​常。 – louis 2010-03-07 15:44:23

回答

1

下面的代碼選擇元素不考慮命名空間的URL:

<xsl:template match="rdf:RDF/rdf:Description"> 
    <xsl:value-of select="*[name() = 'video:Movie']"/> 
</xsl:template> 

但是,如果所有的命名空間是正確的您提供應該工作的代碼,我只是用下面的XSLT測試它(注意是視頻命名空間在XSLT之上)。

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" 
    xmlns:video="http://example.org/movie" 
> 
    <xsl:output method="html"/> 

     <xsl:template match="rdf:RDF/rdf:Description"> 
      <xsl:apply-templates select="video:Movie"/> 
     </xsl:template> 
</xsl:stylesheet> 
相關問題