Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要通过xslt从html标记获取最新样式 一个 :3pt蓝色 _Xslt - Fatal编程技术网

需要通过xslt从html标记获取最新样式 一个 :3pt蓝色

需要通过xslt从html标记获取最新样式 一个 :3pt蓝色 ,xslt,Xslt,大家好 这是输入html的示例部分,我使用的是XSLT1.0。在这里,边框顶部颜色出现了两次。但是在xslt中,我必须采用最新的样式(边框顶部颜色:#5F497A;)。如何做?或任何其他解决方案(通过java进行预处理)。。 请帮助我..提前谢谢..您应该在后面使用子字符串,在前面使用子字符串,如下所示: <TD style="vertical-align:top;padding-left:5.4pt; padding-right:5.4pt;border-top-color:#00000

大家好

这是输入html的示例部分,我使用的是XSLT1.0。在这里,边框顶部颜色出现了两次。但是在xslt中,我必须采用最新的样式(
边框顶部颜色:#5F497A;
)。如何做?或任何其他解决方案(通过java进行预处理)。。
请帮助我..提前谢谢..

您应该在后面使用子字符串,在前面使用子字符串,如下所示:

<TD style="vertical-align:top;padding-left:5.4pt; padding-right:5.4pt;border-top-color:#000000;border-top-color:#5F497A;width:159.60000000000002pt;">    
    <P style="margin-bottom:0pt;">
      <SPAN style="font-weight:bold;">One</SPAN>
       <SPAN style="font-weight:bold;">: 3pt blue</SPAN>
   </P>
</TD>

这假定样式值后面会有一个分号。如果情况并非总是如此,则可以使用xslt contains函数进行检查


在使用xslt 1.0时,请尝试以下方法:

<xslt:value-of select="substring-before(substring-after(@style, 'border-top-color'), ';')"/>

如果您只想获取颜色代码,则可以按如下方式执行:

<xsl:variable name="attr" select="'border-top-color'"/>
<xsl:value-of select="concat(substring-before(@style, $attr),
                             $attr,
                             substring-after(substring-after(@style, $attr), $attr))" 
/>

在语义上更正确的是,此样式表:

<xsl:value-of select="concat('#', substring-before(substring-after(substring-after(@style, '#'), '#'), ';'))"/>
XPath 2.0表达式:

#5F497A

我尝试了这个,它将产生第一个边框顶部颜色(000000)。但我需要第二个(#5F497A)…到底什么对你不起作用?你得到了什么?第一个示例从样式字符串中剪切出第一个
边框顶部颜色
,第二个-从样式属性中获取第二个颜色。那么请更好地描述你的问题。如果要输出
边框顶部颜色:#etc
,则在第二种情况下,将
concat
函数的第一个参数更改为
边框顶部颜色:#
#5F497A
substring-after(
   tokenize(/TD/@style,';')[
      contains(.,'border-top-color')
   ][last()],
   ':'
)