我正在使用xslt将docx文件转换为html。我生成的html包含margin-top:NaN pt;
等样式,默认情况下在浏览器中忽略样式值NaN
。但我必须验证是否存在此类属性,并且必须在浏览器中查看之前删除... < / p>
请帮助我...提前致谢...
答案 0 :(得分:1)
您是否尝试过W3C CSS验证器?
由于SOAP Web服务,您可以以编程方式使用它:
答案 1 :(得分:0)
您应该在添加内联样式之前检查“NaN”。
E.g。考虑这个XML:
<?xml version="1.0"?>
<t>
<Number>adsfdasf</Number>
<Number></Number>
<Number>100</Number>
<Number>1.234234</Number>
</t>
然后你可以:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="Number">
<xsl:value-of select="concat(., ' : ')"/>
<xsl:if test="not(string(number()) = 'NaN')">valid</xsl:if>
<xsl:if test="string(number()) = 'NaN'">invalid</xsl:if>
<xsl:text>
</xsl:text>
</xsl:template>
</xsl:stylesheet>
结果:
adsfdasf : invalid
: invalid
100 : valid
1.234234 : valid
答案 2 :(得分:0)
在生成的结果中查找NaN为时已晚。
应该阻止产生不需要的输出!
这是一个避免生成NaN的例子:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="num[number(.) = number(.)]">
<span style="margin-top:{.}"/>
</xsl:template>
<xsl:template match="num[not(number(.) = number(.))]"/>
</xsl:stylesheet>
将此转换应用于以下XML文档:
<t>
<num>helo</num>
<num></num>
<num>100</num>
<num>1.234234</num>
</t>
仅产生正确的输出(无NaN):
<t>
<span style="margin-top:100"/>
<span style="margin-top:1.234234"/>
</t>