Необходимо проверить стили HTML - PullRequest
1 голос
/ 09 февраля 2011

Я конвертирую docx файл в html, используя xslt. Мой полученный HTML содержит стили, такие как margin-top:NaN pt;, значение стиля NaN по умолчанию игнорируется в браузере. Но мне нужно проверить наличие таких атрибутов и удалить перед просмотром в браузере ...

Пожалуйста, помогите мне ... Заранее спасибо ...

Ответы [ 3 ]

1 голос
/ 09 февраля 2011

Вы пробовали валидатор W3C CSS?

Вы можете использовать его программно благодаря веб-службе SOAP:

0 голосов
/ 09 февраля 2011

Слишком поздно проверять 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>
0 голосов
/ 09 февраля 2011

Вы должны проверить 'NaN' перед добавлением встроенных стилей.

Например, рассмотрите этот 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>&#xa;</xsl:text>
    </xsl:template>
</xsl:stylesheet>

Результат:

adsfdasf : invalid
 : invalid
100 : valid
1.234234 : valid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...