使用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标头中相应地声明了名称空间。
答
下面的代码选择元素不考虑命名空间的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>
在您的Xml文档和样式表中声明了rdf命名空间吗?除了xmlns之外,这里所有的东西都是正确的:rdf =“...” – dkackman 2010-03-07 15:05:34
我已经声明了每个需要的名称空间。因为如果没有,XSL链接到的ASP.net应用程序将抛出异常。 – louis 2010-03-07 15:44:23