我目前正在使用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元素html格式化文本吗?
<?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格式。
答案 0 :(得分: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>