我正在尝试更改内联元素的前景色和背景色。文档片段是这样的:
<command role=" f00 b01 ">Lorem Ipsum</command>
我的自定义层中的 XSL 部分是这样的:
[...]
<xsl:template match='db:command[contains(@role, " f00 ")]'>
<fo:inline color='#000000'><xsl:apply-templates/></fo:inline>
</xsl:template>
<xsl:template match='db:command[contains(@role, " b00 ")]'>
<fo:inline background-color='#000000'><xsl:apply-templates/></fo:inline>
</xsl:template>
[255 x 6 more lines, for each fXX and bXX where X is a hex digit
and the colors are the 256 xterm RGB color specs.]
这只会更改背景颜色或前景色,具体取决于最后一个模板。
当角色值为 时,如何同时应用前景和背景f00 b01
?注意:不能进行第三次测试,contains " f00 b01 "
因为有 256 种颜色可供选择,并且指定所有组合会使模板数量激增。
注意:编辑以更接近实际文件内容
xterm 颜色到 rgb 颜色的映射如下。从颜色 16 开始,它们可以用一个小的 perl 脚本来计算(摘自 xterm distruiution 的片段):
# colors 16-231 are a 6x6x6 color cube
for ($red = 0; $red < 6; $red++) {
for ($green = 0; $green < 6; $green++) {
for ($blue = 0; $blue < 6; $blue++) {
$code = 16 + ($red * 36) + ($green * 6) + $blue;
printf($line1, $code);
printf($line2, $code);
printf($line3,
($red ? ($red * 40 + 55) : 0),
($green ? ($green * 40 + 55) : 0),
($blue ? ($blue * 40 + 55) : 0));
}
}
}
# colors 232-255 are a grayscale ramp, intentionally leaving out
# black and white
$code=232;
for ($gray = 0; $gray < 24; $gray++) {
$level = ($gray * 10) + 8;
$code = 232 + $gray;
printf($line1, $code);
printf($line2, $code);
printf($line3,
$level, $level, $level);
}
结果:
00 #000000 80 #af00d7
01 #cd0000 81 #af00ff
02 #00cd00 82 #af5f00
03 #cdcd00 83 #af5f5f
04 #0000ee 84 #af5f87
05 #cd00cd 85 #af5faf
06 #00cdcd 86 #af5fd7
07 #e5e5e5 87 #af5fff
08 #7f7f7f 88 #af8700
09 #ff0000 89 #af875f
0a #00ff00 8a #af8787
0b #ffff00 8b #af87af
0c #5c5cff 8c #af87d7
0d #ff00ff 8d #af87ff
0e #00ffff 8e #afaf00
0f #ffffff 8f #afaf5f
10 #000000 90 #afaf87
11 #00005f 91 #afafaf
12 #000087 92 #afafd7
13 #0000af 93 #afafff
14 #0000d7 94 #afd700
15 #0000ff 95 #afd75f
16 #005f00 96 #afd787
17 #005f5f 97 #afd7af
18 #005f87 98 #afd7d7
19 #005faf 99 #afd7ff
1a #005fd7 9a #afff00
1b #005fff 9b #afff5f
1c #008700 9c #afff87
1d #00875f 9d #afffaf
1e #008787 9e #afffd7
1f #0087af 9f #afffff
20 #0087d7 a0 #d70000
21 #0087ff a1 #d7005f
22 #00af00 a2 #d70087
23 #00af5f a3 #d700af
24 #00af87 a4 #d700d7
25 #00afaf a5 #d700ff
26 #00afd7 a6 #d75f00
27 #00afff a7 #d75f5f
28 #00d700 a8 #d75f87
29 #00d75f a9 #d75faf
2a #00d787 aa #d75fd7
2b #00d7af ab #d75fff
2c #00d7d7 ac #d78700
2d #00d7ff ad #d7875f
2e #00ff00 ae #d78787
2f #00ff5f af #d787af
30 #00ff87 b0 #d787d7
31 #00ffaf b1 #d787ff
32 #00ffd7 b2 #d7af00
33 #00ffff b3 #d7af5f
34 #5f0000 b4 #d7af87
35 #5f005f b5 #d7afaf
36 #5f0087 b6 #d7afd7
37 #5f00af b7 #d7afff
38 #5f00d7 b8 #d7d700
39 #5f00ff b9 #d7d75f
3a #5f5f00 ba #d7d787
3b #5f5f5f bb #d7d7af
3c #5f5f87 bc #d7d7d7
3d #5f5faf bd #d7d7ff
3e #5f5fd7 be #d7ff00
3f #5f5fff bf #d7ff5f
40 #5f8700 c0 #d7ff87
41 #5f875f c1 #d7ffaf
42 #5f8787 c2 #d7ffd7
43 #5f87af c3 #d7ffff
44 #5f87d7 c4 #ff0000
45 #5f87ff c5 #ff005f
46 #5faf00 c6 #ff0087
47 #5faf5f c7 #ff00af
48 #5faf87 c8 #ff00d7
49 #5fafaf c9 #ff00ff
4a #5fafd7 ca #ff5f00
4b #5fafff cb #ff5f5f
4c #5fd700 cc #ff5f87
4d #5fd75f cd #ff5faf
4e #5fd787 ce #ff5fd7
4f #5fd7af cf #ff5fff
50 #5fd7d7 d0 #ff8700
51 #5fd7ff d1 #ff875f
52 #5fff00 d2 #ff8787
53 #5fff5f d3 #ff87af
54 #5fff87 d4 #ff87d7
55 #5fffaf d5 #ff87ff
56 #5fffd7 d6 #ffaf00
57 #5fffff d7 #ffaf5f
58 #870000 d8 #ffaf87
59 #87005f d9 #ffafaf
5a #870087 da #ffafd7
5b #8700af db #ffafff
5c #8700d7 dc #ffd700
5d #8700ff dd #ffd75f
5e #875f00 de #ffd787
5f #875f5f df #ffd7af
60 #875f87 e0 #ffd7d7
61 #875faf e1 #ffd7ff
62 #875fd7 e2 #ffff00
63 #875fff e3 #ffff5f
64 #878700 e4 #ffff87
65 #87875f e5 #ffffaf
66 #878787 e6 #ffffd7
67 #8787af e7 #ffffff
68 #8787d7 e8 #080808
69 #8787ff e9 #121212
6a #87af00 ea #1c1c1c
6b #87af5f eb #262626
6c #87af87 ec #303030
6d #87afaf ed #3a3a3a
6e #87afd7 ee #444444
6f #87afff ef #4e4e4e
70 #87d700 f0 #585858
71 #87d75f f1 #626262
72 #87d787 f2 #6c6c6c
73 #87d7af f3 #767676
74 #87d7d7 f4 #808080
75 #87d7ff f5 #8a8a8a
76 #87ff00 f6 #949494
77 #87ff5f f7 #9e9e9e
78 #87ff87 f8 #a8a8a8
79 #87ffaf f9 #b2b2b2
7a #87ffd7 fa #bcbcbc
7b #87ffff fb #c6c6c6
7c #af0000 fc #d0d0d0
7d #af005f fd #dadada
7e #af0087 fe #e4e4e4
7f #af00af ff #eeeeee