0

我目前正在使用 XSLT 样式表格式化我的 xml。它看起来有点像这样

<xsl:for-each select="Talents">
    <div style="font-family:Calibri, Arial; font-size:5pt; cursor: default;">
<xsl:if test="Talent != ''">
    <table border="0" width="650">
        <tr>
            <td style="padding-left: 15px;" bgcolor="#A0A0A0" width="80%">

            <b id="toggle"><xsl:value-of select="Talent"/></b></td>

            <td bgcolor="#A0A0A0" width="20%" align="center">
                <xsl:value-of select="TCost"/>
                <xsl:text>  -  </xsl:text>
                <xsl:value-of select="Type"/>
            </td>
         </tr>
    </table>
// etc

所以将 XML 元素格式化成一个漂亮的结构化表格是相当容易的。我想知道如果可能的话,您如何格式化这些元素中的实际文本。

例如,您不知道元素 Tyep 中的内容,但您可以在其中包含 html elemtns,以便如果您看到围绕文本使其变粗等?

所以我的问题是你能用 xml 元素来格式化文本吗?

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="style.xsl" type="text/xsl"?>
<Collection>
     <Talents>
     <Talent>Smiling</Talent>
     <TCost>1</TCost>
     <Type>ANY king of smile will do but the fake ones are the bed</Type>
     </Talents>

我正在看的是是否有可能让html格式像粗体下划线不同的文本颜色?如果是这样,我该如何执行此操作,以便当我打开我的 xml 时,它使用我的 style.xsl 进行样式设置,然后 xml 元素内的文本也具有 html 格式。

4

1 回答 1

0

我试图创建一个工作示例,希望能回答您的问题:

要复制带有 xlm 或 html 标记的内容,您必须将“身份转换模板”复制到您的 xslt 文件中。

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

并从xsl:value-of变为apply-templates。(只是你想拥有整个子树的副本)。

xsl 将如下所示:

<xsl:template match="/*">
    <xsl:apply-templates select="Collection" />
</xsl:template>
<xsl:template match="Collection">
    <xsl:for-each select="Talents">
        <div style="font-family:Calibri, Arial; font-size:5pt; cursor: default;">
            <xsl:if test="Talent != ''">
                <table border="0" width="650">
                    <tr>
                        <td style="padding-left: 15px;" bgcolor="#A0A0A0" width="80%">

                            <b id="toggle">
                                <xsl:value-of select="Talent"/>
                            </b>
                        </td>

                        <td bgcolor="#A0A0A0" width="20%" align="center">
                            <xsl:value-of select="TCost"/>
                            <xsl:text>  -  </xsl:text>
                            <xsl:apply-templates select="Type/node()"/>
                        </td>
                    </tr>
                </table>
            </xsl:if>
        </div>
    </xsl:for-each>
</xsl:template>

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

现在您可以将 html 添加到 Type 标记。使用此输入:

<?xml version="1.0" encoding="UTF-8"?>
<xml>
    <Collection>
        <Talents>
            <Talent>Smiling</Talent>
            <TCost>1</TCost>
            <Type>ANY <b>king</b> of smile will do but the fake ones are the bed</Type>
        </Talents>
    </Collection>
<xml>

它将生成以下输出:

<div style="font-family: Calibri, Arial; font-size: 5pt; cursor: default;">

        <table border="0" width="650">
            <tr>
                <td style="padding-left: 15px;" bgcolor="#A0A0A0" width="80%">
                    <b id="toggle">Smiling</b>
                </td>
                <td bgcolor="#A0A0A0" width="20%" align="center">
                    1 - ANY <b>king</b> of smile will do but the fake ones are the bed
                </td>
            </tr>
        </table>
    </div>
于 2013-04-27T12:10:59.147 回答