我想从 XML 文件中提取数据并将其用作链接

发布于 2024-12-17 14:59:12 字数 764 浏览 0 评论 0原文

这是我的 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

执笏见 2024-12-24 14:59:12

我们应该拥有整个 XML 文档才能做出完整的答案,但我可以说的是。

由于您编写了 但我们看不到任何 Title 元素,我猜我们在模板中与包含 Title 和包含 ErrorLog_list 的元素相匹配的规则。

因此,当您使用属性值模板{ErrorLog_list/error/download_list}时,您会尝试使用XPath获取所有download_list。我猜想返回的节点集将与字符串值一致,因此将使用节点集的第一个值,而不是其他值。

您应该使用 for-each 或制定与 ErrorLog_list/error/download_list 匹配的模板规则。如果您想避免使用属性模板值,还可以在模板规则正文中使用 xsl:attribute

<xsl:template match="download_list">
    <a>
        <xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
        <xsl:value-of select="../../../Title"/>
    </a>
</xsl:template>

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 any Title element, I guess that we are in a template rule that matches on the element that contains Title and that contains ErrorLog_list.

So when you use the attribute value template {ErrorLog_list/error/download_list}, you attempt to get all download_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 on ErrorLog_list/error/download_list. Also you could use an xsl:attribute inside the template rule body if you want to avoid using an attribute template value.

<xsl:template match="download_list">
    <a>
        <xsl:attribute name="href"><xsl:value-of select="."/></xsl:attribute>
        <xsl:value-of select="../../../Title"/>
    </a>
</xsl:template>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文