阅读使用XSLT
标签或元素的多个实例,我的RDF XML文件是这样的..阅读使用XSLT
<rdf:RDF>
<rdf:Description rdf:about="........">
<j.0:property rdf:resource="....."/>
<j.0:property rdf:resource=....."/>
<j.0:property rdf:resource="........"/>
</rdf:Description>
</rdf:RDF>
现在在我的XSLT样式表,我需要检索所有j.0:property
变量的值。我使用的是这样的:
<xsl:apply-templates select="j.0:property"/>
<xsl:template match="j.0:property">
<xsl:text><xsl:value-of select="/rdf:RDF/rdf:Description/j.0:propert /@rdf:resource"/></xsl:text>
</xsl:template>
但是,然后它返回相同的值3次。该值是遇到的第一个属性的值。 请帮助我如何获得每个物业的价值。
在模板匹配内部,您位于匹配元素的上下文中。因此,如果你想获得一个属性的值,所有你需要做的是:
<xsl:value-of select="@rdf:resource"/>
你目前正在使用你选择的属性的路径以“/”开头,因此路径开始文档的根,而不是相对于你的位置。无论它在哪里使用,它都会返回相同的值。
谢谢你!!!!它的工作...真棒! – 2010-04-08 08:54:55
这是指
请注意''xsl:value-of'不能用在'xsl:text'内,正如我在我的回答中所解释的。该行显示在q中。无法编译。 – Abel 2010-04-08 09:02:29
此行是错误的:
<xsl:text><xsl:value-of select="/rdf:RDF/rdf:Description/j.0:propert /@rdf:resource"/></xsl:text>
当你到你所选择的项目是兴田模板,所有你需要的是:
<xsl:value-of select="@rdf:resource" />
它不能确定XSLT是否告诉你真的是你正在使用的XSLT。你发布它的方式,它不能编译。 xsl:apply-templates
行与xsl:template
行相同吗? xsl:text
是否真的含有xsl:value-of
?如果是这样,我会非常有兴趣知道您使用的是哪个处理器,因为没有处理器应该在没有通知您错误的情况下处理您的XSLT。
这就是说,要改进你的样式表,在他的回答中做Russel Leggett explains。不要选择模板中的所有节点(从/
开始,从根中选择),请从当前节点中选择相对较多的节点。以他的回答和拆卸xsl:text
错误,你会得到这样的:
<xsl:template match="j.0:property">
<xsl:value-of select="@rdf:resource"/>
</xsl:template>
使用XSLT 1.0,如果选择多个节点与xsl:value-of
它将输出只有第一。因为你看起来好像有一个xsl:apply-templates
,在某个显然可以工作的地方,那个选择所有但只返回第一个(开头的代码)的行对于你的xsl:apply-templates
中选择的每个节点将被调用三次。
为了帮助您进一步做到更好,请展示我们可以针对您的示例数据运行的完整XSLT样式表的一个简单示例。
@shashank saket:选择要使用的问题之一,并删除其他。如果你不能放下,在另一个指向另一个问题的问题上添加一行作为重复。这使得网站保持干净(你的双重q:http://stackoverflow.com/questions/2597887/xslt-reading-multiple-instances-of-a-tag)。 – Abel 2010-04-08 08:29:17