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

时间:2010-03-07 14:53:47

标签: xml string xslt

这是XML文件的摘录。

<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头中相应地声明了名称空间。

1 个答案:

答案 0 :(得分: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>