使用XSLT从指定的子节点元素中选择字符串/文字

问题描述:

这是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

下面的代码选择元素不考虑命名空间的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>