使用 XSLT/XML 生成 HTML 标签的样式? (xsl:属性集)

发布于 2024-10-18 19:56:34 字数 1162 浏览 1 评论 0原文

好吧,这是一个艰难的小时左右...我在生成不同宽度的表格单元格时遇到了困难。我使用 XML/XSLT 输出 HTML,因此宽度基本上以 XML 格式存储:

<size>
<width1>5</width1>
<width2>4</width2>
<width3>7</width3>
</size>

使用 XSLT 的属性集,我应该有一个表格行和宽度分别为 5px、4px、7px 的单元格。然而,这样做的问题是 attribute-set 需要是 的子级才能工作。我不能这样做:(原谅缺少的 px)

<tr>
    <td>
        <xsl:attribute-set name="style">
            <xsl:attribute name="width"><xsl:value-of select="size/width1"/></xsl:attribute>
        </xsl:attribute-set>
    </td>
    <td>
        <xsl:attribute-set name="style">
            <xsl:attribute name="width"><xsl:value-of select="size/width2"/></xsl:attribute>
        </xsl:attribute-set>
    </td>
    <td>
        <xsl:attribute-set name="style">
            <xsl:attribute name="width"><xsl:value-of select="size/width3"/></xsl:attribute>
        </xsl:attribute-set>
    </td>
</tr>

有没有办法使用 XML 数据生成 html 标签来设置它们的样式?

Okay, it's been a tough hour or so... I'm having difficulties generating table cells with different widths. I'm using XML/XSLT to spit out my HTML, so basically the widths are stored in XML format:

<size>
<width1>5</width1>
<width2>4</width2>
<width3>7</width3>
</size>

Using XSLT's attribute-set I should have a table row and cells with 5px, 4px, 7px widths respectively. However, the trouble with this is that attribute-set needs to be a child of <xsl:stylesheet> for it to work. I CAN'T do this: (forgive the missing px)

<tr>
    <td>
        <xsl:attribute-set name="style">
            <xsl:attribute name="width"><xsl:value-of select="size/width1"/></xsl:attribute>
        </xsl:attribute-set>
    </td>
    <td>
        <xsl:attribute-set name="style">
            <xsl:attribute name="width"><xsl:value-of select="size/width2"/></xsl:attribute>
        </xsl:attribute-set>
    </td>
    <td>
        <xsl:attribute-set name="style">
            <xsl:attribute name="width"><xsl:value-of select="size/width3"/></xsl:attribute>
        </xsl:attribute-set>
    </td>
</tr>

Is there any way to generate html tag using XML data to style them?

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

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

发布评论

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

评论(2

囚我心虐我身 2024-10-25 19:56:34

您需要在 元素中添加 xsl:attribute,而不是 xsl:attribute-set

<xsl:template match="size">
    <tr>
        <td>
            <xsl:attribute name="width">
                <xsl:value-of select="./width1"/>
            </xsl:attribute>
        </td>

        <td>
            <xsl:attribute name="width">
                <xsl:value-of select="./width2"/>
            </xsl:attribute>
        </td>

        <td>
            <xsl:attribute name="width">
                <xsl:value-of select="./width3"/>
            </xsl:attribute>
        </td>
    </tr>
</xsl:template>

Instead of xsl:attribute-set you need to add an xsl:attribute inside your <td> element:

<xsl:template match="size">
    <tr>
        <td>
            <xsl:attribute name="width">
                <xsl:value-of select="./width1"/>
            </xsl:attribute>
        </td>

        <td>
            <xsl:attribute name="width">
                <xsl:value-of select="./width2"/>
            </xsl:attribute>
        </td>

        <td>
            <xsl:attribute name="width">
                <xsl:value-of select="./width3"/>
            </xsl:attribute>
        </td>
    </tr>
</xsl:template>
蓝咒 2024-10-25 19:56:34

更多 XSLT 样式:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" indent="yes"/>
    <xsl:template match="size">
        <table>
            <tr>
                <xsl:apply-templates/>
            </tr>
        </table>
    </xsl:template>
    <xsl:template match="size/*">
        <td style="width:{.}px;">
            <!-- Do stuff -->
        </td>
    </xsl:template>
</xsl:stylesheet>

应用于您的示例结果将是:

<table>
    <tr>
        <td style="width:5px;"></td>
        <td style="width:4px;"></td>
        <td style="width:7px;"></td>
    </tr>
</table>

More XSLT style:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" indent="yes"/>
    <xsl:template match="size">
        <table>
            <tr>
                <xsl:apply-templates/>
            </tr>
        </table>
    </xsl:template>
    <xsl:template match="size/*">
        <td style="width:{.}px;">
            <!-- Do stuff -->
        </td>
    </xsl:template>
</xsl:stylesheet>

Applied to your sample result will be:

<table>
    <tr>
        <td style="width:5px;"></td>
        <td style="width:4px;"></td>
        <td style="width:7px;"></td>
    </tr>
</table>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文