需要找到父节点id

发布于 2024-10-27 04:13:15 字数 563 浏览 1 评论 0原文

这是我

<table id="1" style="width=100%">
    <tr>
        <td id="1">
            <table id="2" style="width=50%">
                <tr>
                    <td id="2">
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>

使用 xslt1.0 的示例输入。当模板匹配“td”匹配时,我需要找到相应的表id值。例如,如果匹配id=1的td,我想从表(id=1)中获取样式属性值并且如果 id=2 的 td 匹配,我想从表(id=2)中获取样式属性值。我在模板中编写了 ancestor::table/@style ,但是两个 td 都引用了 id=1 的表格样式。

This is my sample input

<table id="1" style="width=100%">
    <tr>
        <td id="1">
            <table id="2" style="width=50%">
                <tr>
                    <td id="2">
                    </td>
                </tr>
            </table>
        </td>
    </tr>
</table>

I am using xslt1.0. when ever the template match 'td' is matched, i need to find the corresponding table id value..For example, If the td with id=1 is matched,i want to take style attribute value from table(id=1) and if the td with id=2 is matched,i want to take style attribute value from table(id=2). I have written ancestor::table/@style in my template, but both td are referring the styles of table with id=1.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(3

夏末 2024-11-03 04:13:15

我已经写了
ancestor::table/@style 在我的
模板

你很接近。由于 ancestor 轴中可以有多个 table,因此您需要像 ancestor::table[1]/@style< 中那样获取第一个表/代码>。当然,如果你绝对确定总有一个table链 -> tr -> td (不是可选的tbody)那么你可以接受@Flack的答案。

I have written
ancestor::table/@style in my
template

You were close. Because there can be more than one table in the ancestor axis, you need to get the first one like in ancestor::table[1]/@style. Of course, if you are absolute sure there is always a chain of table -> tr -> td (not optional tbody) then you could go with @Flack's answer.

郁金香雨 2024-11-03 04:13:15

假设您处于“td”上下文中,请使用此 XPath:

../../@style

针对您的示例测试 XSLT:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="td">
        <xsl:value-of select="../../@style"/>
        <xsl:apply-templates/>
    </xsl:template>
</xsl:stylesheet>

结果:

width=100%width=50%

Assuming you are in 'td' context, use this XPath:

../../@style

Test XSLT against your sample:

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="td">
        <xsl:value-of select="../../@style"/>
        <xsl:apply-templates/>
    </xsl:template>
</xsl:stylesheet>

Result:

width=100%width=50%
叹沉浮 2024-11-03 04:13:15

尝试这个 XPath 它工作完美

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="td">
    <xsl:value-of select="ancestor::table[1]/@style"/>
    <xsl:apply-templates/>
</xsl:template>

结果:

width=100%width=50%

Try this XPath it works perfectly

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="td">
    <xsl:value-of select="ancestor::table[1]/@style"/>
    <xsl:apply-templates/>
</xsl:template>

Result:

width=100%width=50%
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文