【问题标题】:XSL mode, what it does? [duplicate]XSL 模式,它有什么作用? [复制]
【发布时间】:2014-01-03 23:35:51
【问题描述】:

我是 XSL 的新手,在完全理解 mode 属性时遇到了一些问题。我认为这是一个可选功能,但是,我最近参与的一个项目使用它来生成电子邮件活动,以一种批量方式区分热门故事和普通故事。

该模式似乎对这些对象的外观产生了深远的影响。例如,一种特定的模式似乎可以创建背景颜色和固定表格宽度。尽管如此,我仍然无法找到该模式在何处或如何决定这一点。一旦我更改或删除模式,所有地狱似乎都会崩溃,布局很快就会被破坏。

我很欣赏这听起来很简短,但对于如何创建模式以及在哪里相关的样式将不胜感激。

【问题讨论】:

  • 能否提供示例代码?
  • 显然,您并没有尝试自己熟悉这一点。你试过谷歌“XSLT”和“模式”吗?帮助一吨。

标签: xml xslt


【解决方案1】:

因为您没有提供任何输入 XML 或示例 XSLT,所以此示例可能不适用于您的解决方案/请求,但它提供了 mode 的工作原理。

输入 XML

<?xml version="1.0" encoding="UTF-8"?>
<data>
    <set>
        <big>no</big>
        <field1>Test</field1>
        <field2>Value</field2>
    </set>
    <set>
        <big>yes</big>
        <field1>Test 2</field1>
        <field2>Value 2</field2>
    </set>
    <set>
        <big>no</big>
        <field1>Test 3</field1>
        <field2>Value 3</field2>
    </set>
</data>

XSLT

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

    <xsl:template match="@*|node()">
        <xsl:apply-templates select="@*|node()" />
    </xsl:template>

    <xsl:template match="data">
        <html>
            <head>
                <title>TEST</title>
            </head>
            <body>
                <table>
                    <xsl:apply-templates select="set[big='yes']" mode="upper" />
                    <xsl:apply-templates select="set[big='no']" mode="lower" />
                </table>
            </body>
        </html>
    </xsl:template>

    <xsl:template match="set" mode="upper">
        <tr>
            <td><xsl:value-of select="upper-case(field1)" /></td>
            <td><xsl:value-of select="upper-case(field2)" /></td>
        </tr>
    </xsl:template>

    <xsl:template match="set" mode="lower">
        <tr>
            <td><xsl:value-of select="lower-case(field1)" /></td>
            <td><xsl:value-of select="lower-case(field2)" /></td>
        </tr>
    </xsl:template>
</xsl:stylesheet>

输出

<?xml version="1.0" encoding="UTF-8"?>
<html>
    <head>
        <title>TEST</title>
    </head>
    <body>
        <table>
            <tr>
                <td>TEST 2</td>
                <td>VALUE 2</td>
            </tr>
            <tr>
                <td>test</td>
                <td>value</td>
            </tr>
            <tr>
                <td>test 3</td>
                <td>value 3</td>
            </tr>
        </table>
    </body>
</html>

简要说明

使用以下代码:

<xsl:apply-templates select="set[big='yes']" mode="upper" />
<xsl:apply-templates select="set[big='no']" mode="lower" />

您决定应在选定节点上应用哪种模式。在模板匹配中,您定义了这些模式:

<xsl:template match="set" mode="upper">
<xsl:template match="set" mode="lower">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多