我想从 XML 文件中提取数据并将其用作链接
这是我的 xml 表 -
<ErrorLog_list>
<error><download_list>/home/fes/logs/ErrorLog-20111109.gz</download_list></error>
<error><download_list>/home/fes/logs/ErrorLog-20111110.gz</download_list></error>
<error><download_list>/home/fes/logs/ErrorLog-20111114.gz</download_list></error>
</ErrorLog_list>
我想要做的是创建一个指向 error/download_list
的链接,
所以我使用了这个标签
<a href="{ErrorLog_list/error/download_list}"><xsl:value-of select="Title"/></a><br/>
,但它不起作用......
我意识到问题可能是因为它被声明为 - xmlns 属性不解释为属性值模板
我的问题是如何更改我的命名空间以使用上述方法?任何帮助将不胜感激。
请忽略我的疏忽。 谢谢
this is my xml sheet-
<ErrorLog_list>
<error><download_list>/home/fes/logs/ErrorLog-20111109.gz</download_list></error>
<error><download_list>/home/fes/logs/ErrorLog-20111110.gz</download_list></error>
<error><download_list>/home/fes/logs/ErrorLog-20111114.gz</download_list></error>
</ErrorLog_list>
what I want to do is to create a link pointing to error/download_list
so I have used this tag
<a href="{ErrorLog_list/error/download_list}"><xsl:value-of select="Title"/></a><br/>
but it ain't working...
I realised that the problem may be because it is stated as- xmlns attributes are not interpreted as attribute value templates
My question is that how can I change my namespace to use the above method? any help would be appreciated.
Please ignore my negligence.
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我们应该拥有整个 XML 文档才能做出完整的答案,但我可以说的是。
由于您编写了
但我们看不到任何Title
元素,我猜我们在模板中与包含Title
和包含ErrorLog_list
的元素相匹配的规则。因此,当您使用属性值模板
{ErrorLog_list/error/download_list}
时,您会尝试使用XPath获取所有download_list
。我猜想返回的节点集将与字符串值一致,因此将使用节点集的第一个值,而不是其他值。您应该使用
for-each
或制定与ErrorLog_list/error/download_list
匹配的模板规则。如果您想避免使用属性模板值,还可以在模板规则正文中使用xsl:attribute
。We should have the whole XML document to make a complete answer but here is what I can say.
Since you write
<xsl:value-of select="Title"/>
but we can't see anyTitle
element, I guess that we are in a template rule that matches on the element that containsTitle
and that containsErrorLog_list
.So when you use the attribute value template
{ErrorLog_list/error/download_list}
, you attempt to get alldownload_list
with XPath. I guess that the returned node set will be concerted to a string value and thus the first value of the node set will be used, not the others.You should use a
for-each
or make a template rule that matches onErrorLog_list/error/download_list
. Also you could use anxsl:attribute
inside the template rule body if you want to avoid using an attribute template value.