我在创建XSLT样式表时需要帮助。也就是说,我无法选择节点并为其应用模板。这是输入和输出xmls和我的XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:template match="/">
<searchresult>
<query>
<xsl:value-of select="/feed/title"/>
</query>
<xsl:apply-templates select="doc-template"/>
</searchresult>
</xsl:template>
<xsl:template name="doc-template" match="entry">
<document>
<title>
<xsl:value-of select="title"/>
</title>
<snippet>
<xsl:value-of select="content"/>
</snippet>
</document>
</xsl:template>
</xsl:stylesheet>
,XML文件是:
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:google="http://base.google.com/ns/1.0" xml:lang="en-US" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://www.w3.org/2005/Atom" xmlns:twitter="http://api.twitter.com/" xmlns:georss="http://www.georss.org/georss">
<title>salsa - Twitter Search</title>
<entry>
<id>tag:search.twitter.com,2005:156464188011708416</id>
<published>2012-01-09T19:55:44Z</published>
<link type="text/html" href="http://twitter.com/RodFF/statuses/156464188011708416" rel="alternate"/>
<title>Al fin ponen mi tanda! @Anelito_Amed @samueltejeira @Elieser_Soriano @jose2734 #salsa #frankieruiz</title>
<content type="html">Al fin ponen mi tanda! @<a class=" " href="http://twitter.com/Anelito_Amed">Anelito_Amed</a> @<a class=" " href="http://twitter.com/samueltejeira">samueltejeira</a> @<a class=" " href="http://twitter.com/Elieser_Soriano">Elieser_Soriano</a> @<a class=" " href="http://twitter.com/jose2734">jose2734</a> #<em>salsa</em> <a href="http://search.twitter.com/search?q=%23frankieruiz" title="#frankieruiz" class=" ">#frankieruiz</a></content>
<updated>2012-01-09T19:55:44Z</updated>
<link type="image/png" href="http://a1.twimg.com/profile_images/1672210480/IMG-20111008-00231_normal.jpg" rel="image"/>
<twitter:geo></twitter:geo>
<twitter:metadata>
<twitter:result_type>recent</twitter:result_type>
</twitter:metadata>
<twitter:source><a href="http://blackberry.com/twitter" rel="nofollow">Twitter for BlackBerry®</a></twitter:source>
<twitter:lang>es</twitter:lang>
<author>
<name>RodFF (Rodolfo Franceschi )</name>
<uri>http://twitter.com/RodFF</uri>
</author>
</entry>
<entry>
<id>tag:search.twitter.com,2005:156464182433288194</id>
<published>2012-01-09T19:55:42Z</published>
<link type="text/html" href="http://twitter.com/Olqa_N/statuses/156464182433288194" rel="alternate"/>
<title>No causo el efecto que imaginaste No me hizo el danio que tu pensaste no llore mas de lo que creiste no hiciste falta cuando te fuiste#salsa</title>
<content type="html">No causo el efecto que imaginaste No me hizo el danio que tu pensaste no llore mas de lo que creiste no hiciste falta cuando te fuiste#<em>salsa</em></content>
<updated>2012-01-09T19:55:42Z</updated>
<link type="image/png" href="http://a3.twimg.com/profile_images/1734507487/IMG01812-20110621-1025_jpg_normal.jpg" rel="image"/>
<twitter:geo></twitter:geo>
<twitter:metadata>
<twitter:result_type>recent</twitter:result_type>
</twitter:metadata>
<twitter:source><a href="http://ubersocial.com" rel="nofollow">ÜberSocial for BlackBerry</a></twitter:source>
<twitter:lang>es</twitter:lang>
<author>
<name>Olqa_N (Olqa Lopez)</name>
<uri>http://twitter.com/Olqa_N</uri>
</author>
</entry>
</feed>
答案 0 :(得分:2)
正如@Zachary Young所说,当目标元素具有非空名称空间URI时,您需要在XSLT路径中使用名称空间前缀。
以下文档包含xmlns:atom
声明,其中包含源文档中使用的URI。它还在XPath步骤中使用atom:
前缀。我还做了其他修改,以实现我认为你试图用“XSLT”这类成语做的事情。
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
xmlns:atom="http://www.w3.org/2005/Atom">
<xsl:output method="xml" encoding="utf-8" indent="yes"/>
<xsl:template match="/atom:feed">
<searchresult>
<query>
<xsl:value-of select="atom:title"/>
</query>
<xsl:apply-templates select="atom:entry"/>
</searchresult>
</xsl:template>
<xsl:template match="atom:entry">
<document>
<title>
<xsl:value-of select="atom:title"/>
</title>
<snippet>
<xsl:value-of select="atom:content"/>
</snippet>
</document>
</xsl:template>
</xsl:stylesheet>
它在我们的XML上生成以下输出(我已缩进):
<searchresult xmlns:atom="http://www.w3.org/2005/Atom">
<query>salsa - Twitter Search</query>
<document>
<title>Al fin ponen mi tanda! @Anelito_Amed @samueltejeira @Elieser_Soriano @jose2734 #salsa #frankieruiz</title>
<snippet>Al fin ponen mi tanda! @<a class=" " href="http://twitter.com/Anelito_Amed">Anelito_Amed</a> @<a class=" " href="http://twitter.com/samueltejeira">samueltejeira</a> @<a class=" " href="http://twitter.com/Elieser_Soriano">Elieser_Soriano</a> @<a class=" " href="http://twitter.com/jose2734">jose2734</a> #<em>salsa</em> <a href="http://search.twitter.com/search?q=%23frankieruiz" title="#frankieruiz" class=" ">#frankieruiz</a></snippet>
</document>
<document>
<title>No causo el efecto que imaginaste No me hizo el danio que tu pensaste no llore mas de lo que creiste no hiciste falta cuando te fuiste#salsa</title>
<snippet>No causo el efecto que imaginaste No me hizo el danio que tu pensaste no llore mas de lo que creiste no hiciste falta cuando te fuiste#<em>salsa</em></snippet>
</document>
</searchresult>